2017-11-08 1 views
1

Ich bin ziemlich neu in der Datenbank-im Allgemeinen. Ich habe ein kleines Projekt, an dem ich arbeite, und ich stehe auf eine Frage, die ich brauche. Ich benutze MySQL. Hier ist mein Setup:MySQL - Abfrage mit mehreren Tabellen und Beziehungen

I 4 Tische bekommen haben:

1: BoeingModels 
B_ID | B_ModelName | B_ModelCode | B_Registrations 
_____|_____________|_____________|_________________ 
    1 | Boeing 737 | BOE-737800 |  500 
    2 | Boeing 787 | BOE-787100 |  126 

2: AirbusModels 
A_ID | A_ModelName | A_ModelCode | A_Registrations 
_____|_____________|_____________|_________________ 
    1 | Airbus A330 | AB-A330 |  418 
    2 | Airbus A380 | AB-A380 |  126 

3: AircraftParts 
P_ID | PartNumber | PartName 
_____|____________|__________ 
    1 | J-504414 | Baggage Door 
    2 | K-774821 | Lavatory Door 

4: Part2Aircraft 
P2A_ID | P_ID* | B_ID* | A_ID* 
_______|_______|_______|_______ 
    1 | 2 | 2 | 
    2 | 1 | 1 | 
    3 | 1 |  | 1 
    4 | 2 |  | 2 

Wie Sie wahrscheinlich sehen können, mehrere Teile auf demselben Flugzeug anwenden können und das gleiche Teil auf mehrere Flugzeuge anwenden können. Das (*) bezeichnet einen Fremdschlüssel. Das Problem, das ich habe, ist das Schreiben einer Abfrage, die die Informationen anzeigen wird, die ich brauche. Hier ist, wie ich die Daten angezeigt mag, wenn möglich:

PartNumber | Applicable Aircraft 
_________________________________ 
J-504414 | Boeing 737, Airbus A330 
K-774821 | Boeing 787, Airbus A380 

Ich habe versucht, googeln und die Suche durch Foren, aber ich bin nicht in Einklang mit dem Kauderwelsch noch so es erfolglos versucht, eine Situation zu finden I kann verstehen, dass das meinem ähnlich ist. Kannst du mir mit dieser Frage helfen?

Antwort

0

Ich habe keine Möglichkeit, dieses Recht jetzt zu testen ... aber

Um alle Teilenummern zu erhalten und ihre entsprechenden Flugzeuge ... einfache Abfrage die Tabellen verknüpft werden (ohne jede Formatierung Sie tun möchten, am Ausgang)

select AircraftParts.PartNumber, BoeingModels.B_ModelName, AirbusModels.A_ModelName von AircraftParts Part2Aircraft auf AircraftParts.P_ID Part2Aircraft.P_ID = verbinden BoeingModels auf Part2Aircraft.B_ID BoeingModels.B_ID = Join AirbusModels auf Part2Aircraft.A_ID = AirbusModels.A_ID;

+0

Die Abfrage wird erfolgreich ausgeführt, aber ich erhalte keine Ergebnisse. Ich habe Daten da drin, die ziehen sollten ... –

+0

Ich habe gerade bemerkt, dass 4 Ihrer Werte in der Verbindungstabelle Nullwerte (leere Werte) haben. Das wird für die von Ihnen gesuchte Ausgabe nicht funktionieren. Ich würde vorschlagen, BoeingModels und AirbusModels in einem Tisch zu kombinieren. Dann würden Sie die relevanten Teile des Auswahlbefehls entfernen. – Joel

+0

Das hat funktioniert! Habe die Daten, die ich brauchte. Vielen Dank! Nun eine andere Frage für Sie: Ist es möglich, die PartNumber-Zeilen in dieser Abfrage zu kombinieren und die anwendbaren Modelle durch Kommas zu trennen? Siehe mein Beispiel am Ende meines ursprünglichen Posts. –

Verwandte Themen