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:
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
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
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: