SELECT über mehrere TABLE

Hallo Zusammen,

ich bin noch relativ neu im SQL-Bereich unterwegs und bin natürlich fleißig dabei selbst meine probleme zu lösen, aber an folgendem bin ich jetzt leider schon etwas länger ohne lösung dran:

In einer Tabelle (Table_1) werden einzeln waren positionen (z.B. online gutschein codes) gehalten.
Bsp.
VendorID,Variant,Code,Sold
H-1234,Variante1,ABC-1234,0
H-1234,Variante1,ABC-4321,1
H-1234,Variante3,ABC-5678,0

H-9832,Variante2,CBA-3542,0
H-9832,Variante2,CBA-3512,0
H-9832,Variante2,CBA-3565,0

In einer anderen tabelle (Table_2) werden die Namen der Händler gehalten.
Bsp.
ID,Name
H-1234,Haendler1

H-9832,Haendler99

Und in einer dritten tabelle (Table_3) werden die varianten namen gehalten.
Bsp.
VendorID,VariantID,Description
H-1234,Variante1,50 EUR
H-1234,Variante2,75 EUR
H-1234,Variante3,25 EUR

H-9832,Variante1,5 EUR
H-9832,Variante2,15 EUR
H-9832,Variante3,25 EUR

Ziel soll eine SELECT Abfrage sein die mir ausgibt wenn für eine Variante eines Händlers der Bestand einen kritischen wert erreicht hat (z.B. <= 10)
Die Information aus Table_1 zu ziehen ist nicht weiter schwer:

SELECT VendorID, Variant, COUNT(Code) AS Anzahl
FROM Table_1
WHERE Sold='0'
GROUP BY VendorID, Variant
HAVING COUNT(Code) <= 10
ORDER BY VendorID

Ergebnis:
H-1234,Variante1,9
H-1234,Variante2,4
H-1234,Variante3,6

H-9832,Variante1,1
H-9832,Variante2,10
H-9832,Variante3,3

Allerdings ist das wunschergebnis, nicht die IDs der Haendler und Varianten auszugeben, sondern die richtigen Namen:

Table_2.Name,Table_3.Description,COUNT(Table_1.Code) AS Anzahl
Haendler1,75 EUR,4

Bin für jede hilfe dankbar.

LG, Bloke

Was Du suchst, nennt sich JOIN, hier wohl ein LEFT JOIN. Google danach, da gibt es massig Doku und Beispiele im Netz.

Ansonsten: das ist ein schön normalisiertes Datenmodell, so ein Anfänger bist Du also gar nicht …


Andreas

Danke, das wars :wink:

Lösung:

SELECT Name, Description, COUNT(Code)
FROM Table_1 
LEFT JOIN  Table_2
ON Table_1.VendorID = Table_2.ID
LEFT JOIN  Table_3
ON Table_1.Variant = Table_3.VariantID
WHERE Sold='0'
GROUP BY Name, Description
HAVING COUNT(Code) <= 10