2016-04-04 25 views
1

Ich muss eine Liste von Exponaten aus einer Datenbank zeigen. Einige sind Ereignisse (Shows, die nur einen Tag dauern), markiert mit einer Checkbox. Ich möchte diese nicht aufnehmen.Gleich und nicht gleich in PHP Abfrage

Beim Ausführen meiner Abfrage ohne und Selektor, bekomme ich 103 Ergebnisse.

Wenn ich diese Zeile hinzufügen

AND `event`.`meta_value` = 'on' 

ich 23 Ergebnisse (die Ereignisse). Es läuft gut.

Wenn ich diese Zeile statt

AND `event`.`meta_value` != 'on' 

hinzufügen erhalte ich 12 Ergebnisse. Sie sind keine Ereignisse, aber es fehlen 68 Beiträge.

Ich versuchte auch mit <> anstelle von != mit einem ähnlichen Ergebnis.

+0

@Skaddict, haben Sie in der Lage gewesen, um zu überprüfen, ob mein Vorschlag richtig war? – Jester

Antwort

0

Sie andere 68 Beiträge haben wahrscheinlich NULL als Wert, sollten Sie auch in der Lage sein, dies für sich selbst zu sehen, wenn Sie die Datenbank überprüfen. Sie zeigen nicht mit = oder = ... Wenn Sie wollen, dass sie sehen Sie Ihre Anfrage speziell für das Attribut suchen ändern müssen werde sein NULL:

AND `event`.`meta_value` IS NULL 
+0

Danke! Ich habe es geschafft, die fehlenden Ergebnisse mit dieser Lösung zu bekommen. Ich weiß immer noch nicht, warum einige Events nur mit '! = 'On'' geholt werden, aber ich habe beide Bedingungen kombiniert, um alle benötigten Posts zu bekommen. – Skaddict

+0

Gut, dass es geholfen hat, 'NULL' wird nicht als Wert angesehen, daher kann man nichts damit vergleichen. Deshalb kommt es nicht auf, wenn '! ='. Nicht einmal "NULL" kann gleich "NULL" sein;) fand eine schöne Metapher dafür. 'NULL' ist die Abszisse einer Antwort. Wenn du 2 Leute fragst, wie alt sie sind und beide sich weigern zu antworten, hast du 'NULL' für beide. das bedeutet nicht, dass sie gleich alt sind. Das bedeutet auch nicht, dass sie dasselbe Alter haben. Es gibt einfach keine Möglichkeit, die beiden zu vergleichen :) also müssen Sie sowohl '! =' Als auch 'IS NULL' machen, um den kompletten Satz zu erhalten, den Sie wollen. – Jester

+0

Danke für die tolle Antwort, das macht jetzt so viel Sinn! – Skaddict