Lydia: MySQL, Bestellungen mit best. Artikel incl. aller Artikel

Beitrag lesen

Hallo Vinzent,
lieben Dank für Deine Info.

Die Fehlermeldung deutet auf eine 'falsche' Schreibweise hin:
You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT BestID FROM Artikel ...'

(Ist der Beginn der Unterabfrage, die ja in Klammern steht.)

Die MySQL-Version gibt der Provider nicht bekannt, daher gehe ich von einer ziemlich aktuellen Version aus.

Deine Unterabfrage stimmt jedenfalls, da bekomme ich, was ich will :-)
Allerdings würde mich schon interessieren, warum die Unterabfrage nicht geht.

Auf jeden Fall schon mal einen lieben Dank an Dich!

Ly.

Hallo,

bei Fragen zu MySQL ist es immer eine gute Idee, die verwendete Version anzugeben, da sich die Fähigkeiten von MySQL zwischen verschiedenen Versionen deutlich unterscheiden. Dies gilt ganz besonders für Dein Problem.

In Access funktioniert das prima mit einer Unterabfrage:
SELECT Artikel.ArtikelID, Artikel.BestID
FROM Artikel
WHERE (((Artikel.BestID) In (SELECT BestID from Artikel where ArtikelID='12307')));

Aber MySQL macht das nicht.

Selbstverständlich ist Dein SQL-Statement für MySQL überhaupt kein Problem, vorausgesetzt Du verwendest mindestens MySQL 4.1, da Subselects ab MySQL 4.1 unterstützt werden. Das läßt mich vermuten, dass Du eine ältere Version von MySQL verwendest. Es wäre für Deine potentiellen Helfer weiterhin hilfreich, die Fehlermeldung zu wissen, die MySQL ausgibt.

Dein Subselect sollte sich mit Hilfe eines Selfjoin umschreiben lassen:

SELECT

a1.ArtikelID            -- verwende einen Alias für die Tabelle Artikel
FROM Artikel a1           -- da Du zweimal auf diese Tabelle zugreifst
INNER JOIN Artikel a2     -- und hier erneut einen Alias
ON a1.BestID = a2.BestID  -- Verknüpfe über die BestID
WHERE a2.ArtikelID = 12307


>   
> sollte das gewünschte Ergebnis in MySQL < 4.1 liefern.  
>   
>   
> Freundliche Grüße  
>   
> Vinzenz