WHERE: 2x gleiche Spalte ansprechen ?!

Sebigf

Erfahrenes Mitglied
Hallo zusammen,

ich habe eine Filterung programmiert, in der Einträge nach einer ID "oder" nach dem Status sortiert werden sollen.

Hier die WHERE Klausel:

Code:
WHERE ((tab.kategorie LIKE '%\"".$id."\"%') && (tab.status = 'yes')) OR (tab.status = 'yes')

Nur leider wird es ab dem OR nicht mehr ausgewertet bzw. trifft dies nie zu, obwohl es ja logisch währe.

Danke
 
Hallo,

die Abfrage ist so wie sie abgedruckt ist unsinnig, wei die mit && verknüpfte linke Seite
"(tab.kategorie LIKE '%\"".$id."\"%') && (tab.status = 'yes'))"
nur dann zutreffen kann, wenn auch
tab.status = 'yes'
wahr ist.

Folgende where Bedingung bewirkt dasselbe:


WHERE tab.status = 'yes'
 
Mmh, sowas hab ich mir gedacht ;)

Mir geht es bei der ganzen Abfrage um folgendes:

Es gibt ein Dropdown, welches mit IDs versehen ist.

WENN: die ID gesetzt (nicht NULL) ist
DANN: Entrys mit status = 'yes' UND der passenden ID auslesen

ODER

WENN: die ID nicht gesetzt (NULL) ist
DANN: nur Entrys mit status = 'yes' auslesen

Kannst du damit was anfangen ?
 
Irgendwie komisch, da es ja relativ einfach ist, so etwas zu prüfen oder nicht ?

Was ich damit meine, dass in meinem 1. Code meiner Meinung nach richtig "gedacht" wurde, es aber in SQL so nicht geht.

Muss es wirklich durch ein Script geprüft werden ?

PS: Nicht falsch verstehen, will dir nix. Nur irgendwie muss es doch auch so gehen... (ohne externe Sprachen)
 
Du hast oben nicht richtig gedacht. Deine vollständige Bedingung müsste (pseudo-code) so lauten:

(gegebene id = datensatz id UND status=yes) ODER (gegebene id nicht gesetzt UND status=yes)

Du schlägst Dich also mit drei Aussagen herum, die Du so zusammenfassen könntest:

status=yes UND (gegebene id = datensatz id ODER gegebene id nicht gesetzt)

Dieses "gegebene id nicht gesetzt" sollte man sinnvollerweise in PHP prüfen, alleine schon, weil man Formulardaten nicht ungeprüft in ein Query schicken sollte.
Wenn man das ohnehin schon getan hat, muss man das Query damit nicht belasten.

Warum machst Du bei einer ID eigentlich einen String-Vergleich?

Gruß hpvw
 
Alles klar, jetzt hab ichs ;)

Warum String Vergleich ?


Weil der geg. Wert ein serialisiertes Array ist.

Code:
a:1:{i:0;s:2:"10";}
 
Zurück