Alex: Migration von MySQL 3.23 -> 4.1: Problem mit Subqueries

Beitrag lesen

Moin allerseits,

Ich habe durch den Wechsel von der MySQL Clientversion 3.23.49 auf 4.1.18 Probleme bekommen mit Subqueries. Ich möchte eine Liste (list_pics) mit Verweisen auf Bild-Referenzen (refs) nach bestimmten Kategorien filtern (categories + catsets).

Tabellen:
---------

refs ([id, label, path, ...] Tabelle für Bild-Referenzen)

list_pics ([entry_id, id, label, ...] referenziert mit dem Primary Key 'id' auf einen Eintrag in Tabelle 'refs')

categories ([cid, label, ...] Tabelle für Kategorien)

catsets ([cid, id] Tabelle für Zuweisungen von Bild-Referenzen (id) an Kategorien (cid))

Meine SQL-Query:

SELECT list.label, list.id, list.entry_id FROM list\_pics As list INNER JOIN refs As ref ON ref.id=list.id WHERE (
 ref.id != '163'
  AND
 (SELECT count(cat.cid) FROM catsets As catset INNER JOIN categories AS cat ON catset.cid=cat.cid WHERE catset.id=list.id AND cat.cid = '6') > 0
) ORDER BY position LIMIT 0, 1

Die erste Bedingung "ref.id != '163'" ist hier zu vernachlässigen.
Probleme gibts bei der zweiten Bedingung, der Subquery. Der Bedingung "catset.id=list.id" fehlt für "list.id" der Wert, der eigentlich aus der Hauptquery übergeben werden sollte.

Konkrete Frage: Kann es sein das seit 4.x Subqueries nicht mehr auf Spalten referenzieren können, die in der Hauptquery bestimmt werden? Und wie kann man dieses dennoch erreichen?

Vielen Dank für Eure Hilfe,

Alex