inner-join-Feld in mehrere Spalten in der Tabelle
Ich habe SQL Tabelle, hält Käufer personenbezogene Daten, wie Vorname, Nachname, OGCard;
OGCard - Feld, das angibt, clients persönlichen Kartennummer.
Als Nächstes habe ich die Tabelle mit dem Namen-Karten, die Daten enthält etwa zehn Artikel, die gekauft wurden, in folgendem format: OGCard, Item1ID,...,Item10ID,Item1Quantity,...,Item10Quantity
Und in der Tabelle Artikel, die ich bekam solche Struktur ItemID, ItemName
Möchte ich, um alle Einkäufe aus CardNumber
Ich denke, ich sollte etwas tun, dass
SELECT Buyers.FirstName, Items.Name, Cards.Item1Quantity
FROM Buyers
INNER JOIN Cards ON Buyers.OGCard=Cards.OGCard
INNER JOIN Items ON Cards.Item1ID=Items.ItemName
WHERE OGCard=13451
Ich auf diese Weise können Sie den Namen der ersten Artikel und es ist Menge. Allerdings kann ich nicht ausführen, den gleichen join-Spalte Item2ID, und so weiter. Könnten Sie mir empfehlen eine Lösung?
- Können Sie das Design Ihrer Datenbank? Mit Spalten benannt, foo1, foo2, ..., foo10 ist fast immer eine schlechte Idee.
- Ich wirklich brauchen, um haben solche Tabellen Struktur für die Normalisierung
- Es ist nicht normalisiert. Siehe en.wikipedia.org/wiki/First_normal_form "Wiederholenden Gruppen in Spalten".
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es möglich an die gleiche Tabelle zweimal über Aliase:
Wenn einige der
Items_n_ID
s können fehlen, könnte man eineLEFT JOIN
statt einerINNER JOIN
so, dass Sie immer noch die Ergebnisse für die Werte, die vorhanden sind.Allerdings würde ich dringend empfehlen, Sie zu normieren, Ihre Datenbank anstatt mit diesem Ansatz.
Ohne zu wissen, wie der Artikel Tisch-set-up, die Sie tun könnten:
Ohne den table-layouts dies ist nur eine Vermutung und ich würde vermuten, wenn dies funktioniert, die Sie benötigen, zu betrachten, wie das schema ist layed out...