puoi utilizzare gli if nelle query
ma a parte questo ...
spiega un po meglio per cosa intendi "la lingua passata", dove questo parametro nella query?
WHERE catalog_objects.lang = 1 OR catalog_objects.lang = 2
AND catalog_materials.lang = 1 OR catalog_materials.lang = 2
AND catalog_targets.lang = 1 OR catalog_targets.lang = 2
allora ... il where funziona che se il risultato complessivo delle operazioni booleane è TRUE allora estrae la riga altrimenti nulla
di conseguenza tu devi fare in modo di far tornare TRUE se ti interessa estrarre la riga o false se non la vuoi
ora se ho capito a te interessa estrarla solo se le tre tabelle hanno nella riga la colonna lang impostata su 1 o 2
per fare una cosa di questo tipo il codice che ti ha dato luca dovrebbe andare bene, il problema è, mi sa, che non abbiamo capito bene cosa ti serve fare :\
ora ... gli IF li puoi "creare" tu manualmente
infatti gli IF lavora pure con le condizioni booleano di conseguenza se, ad esempio, vuoi far si che le varie colonne lang abbiano 1 o 2 come valore devi costruire un "IF" in cascata
se prendiamo in considerazione
da solo questo codice vediamo che non fa altro che dire che il valore catalog_objects.lang deve essere uno o due.codice:catalog_objects.lang = 1 OR catalog_objects.lang = 2
A te interessa fare questo su i valori di tre tabelle diverse messe nelle join, di conseguenza devi usare le parentesi!
(catalog_objects.lang = 1 OR catalog_objects.lang = 2) AND (catalog_materials.lang = 1 OR catalog_materials.lang = 2)
guarda la struttura impostata in questo modo
(FALSE/TRUE OR FALSE/TRUE) AND (FALSE/TRUE OR FALSE/TRUE)
AND per restituire TRUE vuole due valori in input TRUE altrimenti restituisce FALSE
OR per restituire TRUE necessità che un solo input sia TRUE di conseguenza restituisce FALSE solo se sono tutti e due zero
quindi mettiamo che
catalog_objects.lang = 1
e
catalog_materials.lang = 2
quindi sostituendo i valori nell'espressione preecdente avremmo
(catalog_objects.lang = 1 OR catalog_objects.lang = 2) AND (catalog_materials.lang = 1 OR catalog_materials.lang = 2)
=
(TRUE OR FALSE) AND (FALSE OR TRUE)
=
TRUE AND TRUE
=
TRUE
di conseguenza viene estratta la riga
la stessa cosa con 3 o più valori
però a questo punto, se quello che volevi fare è questo, controlla i valori presenti nel database, per la query che esegui, perché la query che ti ha dato luca è corretta![]()