2016-05-08 11 views
0

Ich bin neu auf (My) SQL und benötige Hilfe: In einer Datenbank Ich habe 3 Tabellen, ein Beispiel:(My) SQL: Verbinden Sie mehrere Tabellen

Käufe:

 
id model price 
------------ 
1 1 2500 
2 2 14000 

Hersteller:

 
id name 
----------- 
1 Opel 
2 Crysler 

Modell:

 
id name manufacturer 
------------------------- 
1 Astra  1 
2 C 300  2 


In der Tabelle Käufe Modell ist ein Fremdschlüssel und ist verknüpft mit model.id. In Modell Hersteller ist ein Fremdschlüssel und ist mit Hersteller.id verbunden.

Mein Ziel ist eine Tabelle, die wie unten aussieht:

 
id model price manufacturer 
------------------------------ 
1 Astra 2500 Opel 
2 C300 14000 Chrysler 

Ich weiß, wie ein in der Tabelle Einkäufe trete auf den Namen des Modells zu erhalten. Leider weiß ich nicht, wie man den Hersteller bekommt?

My SQL-Abfrage:

 
SELECT * FROM purchases 
JOIN model 
ON purchases.model = model.id 
+0

Bearbeiten Sie Ihre Frage und umfassen die Abfrage, die Sie wissen, wie man schreibt. Als Hinweis: Die ultimative Abfrage ist nur noch ein 'JOIN'. –

+0

@GordonLinoff Ich habe meine Frage bearbeitet. Mein Ansatz wäre so etwas wie (für den zweiten JOIN): 'JOIN Hersteller ON Käufe.Name = Hersteller.ID', jedoch für SQL Purchases.Name ist eine unbekannte Klausel. – brahue

Antwort

2

Probieren Sie es mit 'INNER JOIN':

select m.name as model, p.price, mf.name as manufacturer 
from purchases p 
inner join 
model m on p.model = m.id 
inner join 
manufacturer mf on m.manufacturer = mf.id; 

Sie können Ihre Tabellen mit 'wo' beizutreten.

Versuchen Sie es:

select m.name as model, p.price, mf.name as manufacturer 
from purchases p, manufacturer mf, model m 
where m.manufacturer = mf.id 
and p.model = m.id 

Aber mit dem „Wo“ ist nicht sehr gut, und eine archaische Art und Weise betrachtet.

Es ist eine Frage ähnlich mit ihr, vielleicht könnten Sie helfen, die Frage zu klären: SQL Inner-join with 3 tables?

+0

@PaulSpiegel Ich habe diesen Zustand nicht vergessen. Bitte lesen Sie den Text. –

+0

Entschuldigung, ich habe meinen Kommentar bereits gelöscht, bevor Sie Ihren gepostet haben. Allerdings würde ich diese Bedingung wahrscheinlich nicht übersehen, wenn Sie 'JOIN .. ON ..' verwenden würden. –

+1

Ich werde die Antwort nicht ablehnen, aber die Upvote ist völlig unangemessen. Verwenden Sie in der FROM-Klausel keine Kommas. Dies ist eine archaische Syntax, die seit vielen, vielen Jahren durch die leistungsstärkeren Schlüsselwörter 'JOIN' und' ON' ersetzt wurde. –

0

Den richtigen Weg zur Verknüpfung von Tabellen wird mit den JOIN (und verwandten) Keywords. Einfache Regel: Nie Kommas in der FROM Klausel verwenden. Verwenden Sie immer explizit JOIN Syntax:

select m.name as model, p.price, mf.name as manufacturer 
from purchases p JOIN 
     model m 
     on p.model = m.id 
     manufacturer mf 
     on m.manufacturer = mf.id; 
+0

Ihr Kommentar bezieht sich nicht auf die Frage, da das OP bereits die JOIN-Syntax verwendet. BTW: das zweite JOIN-Schlüsselwort fehlt. –

+0

@PaulSpiegel. . . Die ursprüngliche Version der Frage hatte keine Beispielabfrage. Und die andere Antwort benutzte nur Kommas, wenn ich das schreibe. –