mySQL Abfrage über 2 Tabellen
dobra
- datenbank
Hallo,
kann mir bitte jemand helfen - ich kriegs nicht hin :'(
Mein Problem:
Ich habe eine Artikelnr. die sowohl zu einem Artikel als auch zu einer Artikel-Variante passen kann.
Ist die Artikelnr ($ItemID) eine Variante, bekomme ich die Werte mit
SELECT CSVMENGE, HARTNR FROM $SITM WHERE ITEMID = "$ItemID"
ist es ein Artikel mit
SELECT CSVMENGE, HARTNR FROM $ITEM WHERE ITEMID = "$ItemID"
Meine Versuche
SELECT $ITEM.CSVMENGE, $ITEM.ARTNR FROM $SITM INNER JOIN $ITEM ON $SITM.ITEMID = $ITEM.ITEMID WHERE ($SITM.ITEMID = "$ItemID" OR $ITEM.ITEMID = "$ItemID")
SELECT CSVMENGE, ARTNR FROM $SITM LEFT JOIN $ITEM ON $ITEM.ITEMID = $SITM.ITEMID WHERE ITEMID = "$ItemID"
SELECT CSVMENGE, ARTNR FROM $SITM INNER JOIN $ITEM ON $ITEM.ITEMID = $SITM.ITEMID WHERE ITEMID = "$ItemID"
SELECT $SITM.CSVMENGE, $SITM.ARTNR, $ITEM.CSVMENGE, $ITEM.ARTNR FROM $SITM INNER JOIN $ITEM ON $ITEM.ITEMID = $SITM.ITEMID WHERE ($SITM.ITEMID = "$ItemID" OR $ITEM.ITEMID = "$ItemID")
(und noch ein paar ebenso falsche)
bringen aber immer nur "undefined"
Wie muss ich das Statement richtig schreiben ?
lg
dobra
sorry - Tippfehler:
HARTNR = ARTNR
Hallo,
Ich habe eine Artikelnr. die sowohl zu einem Artikel als auch zu einer Artikel-Variante passen kann.
das ist die Ausgangslage. Was möchtest Du denn als Ergebnis haben.
Ist die Artikelnr ($ItemID) eine Variante, bekomme ich die Werte mit
SELECT CSVMENGE, HARTNR FROM $SITM WHERE ITEMID = "$ItemID"
ist es ein Artikel mit
SELECT CSVMENGE, HARTNR FROM $ITEM WHERE ITEMID = "$ItemID"
[... ein paar Statements entfernt ...]
bringen aber immer nur "undefined"
undefined ist keine übliche Antwort eines Datenbankservers auf eine Query
Vermutlich möchtest Du in Deinem Abfrageergebnis sowohl die passenden Zeilen aus der Tabelle der Varianten als auch die passenden Zeilen aus der Tabelle der Artikel. Wenn ich mit meiner Vermutung richtig liege, dann willst Du eine UNION verwenden:
SELECT
CSVMENGE, -- komplett groß geschriebene Spaltennamen sind unüblich
HARTNR -- und erschweren die Lesbarkeit
FROM
$SITM -- ein zulässiger, wenn auch ungewöhnlicher Tabellenname
WHERE
ITEMID = '$ItemID' -- MySQL ist das einzige mir bekannte DBMS, das
-- doppelte Anführungszeichen als Begrenzer von
-- Zeichenketten erlaubt. Gewöhne Dir daher besser an,
-- grundsätzlich mit einfachen Anführungszeichen
-- zu arbeiten.
[link:http://dev.mysql.com/doc/refman/5.1/en/union.html@title=UNION ALL]
SELECT
CSVMENGE,
HARTNR
FROM
$ITEM
WHERE
ITEMID = '$ItemID'
sollte dann liefern, was Du haben willst.
Freundliche Grüße
Vinzenz
Vielen lieben Danke für die superschnelle Hilfe
SO funktioniert es wie es soll :)
DANKE !!!
(auch für die Tipps in den Kommentaren)