[MySql] Negative WHERE-Klausel

Loomis

Mitglied Bunt
Ich habe da ein Verständnis Problem mit einer WHERE-Klausel.

Hier erstmal Tabellen Struktur und Statement, wie ich es momentan habe:
Code:
Tabelle Einträge
----------------------------------------------------------
id          mediumint(5)  	   	 	  	 
titel 	    varchar(100)	  	  	 
keys 	    varchar(200)	  	  	 
text 	    longtext	  	  	 
active 	    enum('0', '1')  	 
datestart 	timestamp	  	 
dateend 	timestamp
----------------------------------------------------------
Tabelle Kategorie
----------------------------------------------------------
katid  	    mediumint(5) 	    	   	 
katname 	varchar(35)
----------------------------------------------------------
Tabelle Einteilung
----------------------------------------------------------
id  	    mediumint(5)	    	   	 
katid 	    mediumint(5)
----------------------------------------------------------
SQL:
SELECT
    `eintrag`.`id`,
    `eintrag`.`titel`,
    `eintrag`.`datestart`,
    `eintrag`.`dateend`,
    `eintrag`.`active`,
    `einteilung`.`katid`,
    `einteilung`.`id`,
    `kategorie`.`katid`,
    `kategorie`.`katname`
FROM
    `eintrag`
LEFT JOIN
(
    `einteilung`,
    `kategorie`
)
ON
(
        `einteilung`.`katid` = 1
    AND
        `kategorie`.`katid` = `einteilung`.`katid`
    AND
        `einteilung`.`id` = `eintrag`.`id`
    AND
    (
            "2008-05-27 13:19:12"
        BETWEEN
            `eintrag`.`datestart`
        AND
            `eintrag`.`dateend`
    )
)
WHERE
    `eintrag`.`active` != 1
Mit der Tabelle Einteilung war ich lange am Überlegen ob es sinnvoll ist. Da Einträge in mehreren Kategorien vorkommen können, erschien mir das am besten so.

Zu meinem eigendlichen Problem:

Für jeden Eintrag gibt es ein Flag "active", das entweder 0 (inactiv) oder 1 (active) sein kann. Will ich jetzt alle EInträge anzeigen lassen, die 1 (active) sind, würde ich, WHERE `eintrag`.`active` = 1 notieren. Funktioniert aber nicht.
Schreibe ich "= 1" bekomme ich alle Einträge in denen "active" auf 0 ist. So wie es oben nortiert ist (also != 1) bekomme ich alle Einträge bei denen "active" auf 1 ist.
Und genau das verstehe ich nicht. Oder ich stehe auf dem Schlauch.
Da es funktioniert ist es nicht schlimm, nur verstehen würde ich das schon gerne.

Ich hoffe ich habe das verständlich erklärt :)
 
Zuletzt bearbeitet von einem Moderator:
Hi,

versuchs mal so:

Code:
WHERE
    `eintrag`.`active` != '1'

Ich glaube bei ner enum braucht man die Gänsefüßchen...

Gruß
Flo
 

Neue Beiträge

Zurück