SQL-Anweisung ändern.
gondor
- datenbank
0 Kalle_B1 _King Lully0 gondor
Hallo!
Aufgrund einer alten Version von MySQL kann ich keine SubSelects ausführen. Lokal habe ich eine 5.0'er Version und muss nun meine Anweisung auf eine lauffähige Version abändern. Leider habe ich schon so viel Zeit investiert, dass ich hier einfach nachfragen muss. Meine Query sieht folgend aus:
SELECT *
FROM kategories AS Kategorie, kategorielangs AS Kategorielang
WHERE Kategorie.id_kategorielang = Kategorielang.id
AND Kategorie.type = 'Auto'
AND Kategorie.id NOT
IN (
SELECT AutoKategorie.id_kategorie
FROM auto_to_kategories AS AutoKategorie
WHERE AutoKategorie.id_obj = 2
AND AutoKategorie.id_auto = 4
)
Wie sieht die Query für die 4.0'er aus?
Danke für Hilfe,
gondor(..)
Hallo!
du möchtest Sätze haben, die in der Tabelle "kategories", aber nicht in Tabelle "AutoKategorie" sind. Richtig verstanden?
Dann kannst du mit einem JOIN arbeiten.
Du joinst ein Feld der zweiten Tabelle dazu, das dort immer belegt ist. Wenn es keinen Satz gibt, ist dieses Feld NULL.
Und diese Sätze musst du ausklammern.
Lieben Gruß, Kalle
SELECT *
FROM kategories AS Kategorie, kategorielangs AS Kategorielang
WHERE Kategorie.id_kategorielang = Kategorielang.id
AND Kategorie.type = 'Auto'
AND Kategorie.id NOT
IN (
SELECT AutoKategorie.id_kategorie
FROM auto_to_kategories AS AutoKategorie
WHERE AutoKategorie.id_obj = 2
AND AutoKategorie.id_auto = 4
)Wie sieht die Query für die 4.0'er aus?
Freunde Dich mal mit ordentlichen JOINs an:
Skizze:
SELECT
* -- Hüstel
FROM
kategories AS Kategorie -- Hüstel
JOIN
kategorielangs AS Kategorielang -- Hüstel
ON
(Kategorielang.id = Kategorie.id_kategorielang)
JOIN
auto_to_kategories AS AutoKategorie -- Hüstel
ON
( <Hier muss was rein> ) -- die JOIN-Bedingung
WHERE
(Kategorie.type = 'Auto') AND
(AutoKategorie.id_obj = 2) AND
(AutoKategorie.id_auto = 4)
Mein Problem ist auf NULL-Werte zu prüfen.
Wenn in der Tabelle AutoKategorie schon Einträge vorhanden sind, kann ich den ON( <Hier muss was rein> ) ja mit = bzw. != abfragen. Komm hier echt nicht weiter... wie kann ich alle Werte auslesen, die 'nicht' in der Tabelle sind.
Reicht da ein einfacher JOIN oder muss ich RIGHT/LEFT JOIN benutzen?
Please help ;-)
gondor(..)
Reicht da ein einfacher JOIN oder muss ich RIGHT/LEFT JOIN benutzen?
Mal die JOINs ausprobieren. ;)