Frage zu SQL-Query
Peter
- datenbank
Hallo
Ich habe ein Tabelle A:
id_A ¦ name
eine Tabelle B
id_B ¦ name
und eine Tabelle C (Welche Beziehungen zwischen A und B definiert)
id_C ¦ id_A ¦ id_B
Nun versuche ich ein Query zu machen, welches mir alle abhängigen Datensätze aus Tabelle B zurückgibt unter der Bedingung dass id_A='x' ist. (Wobei x die ID des Produkts ist, für welches ich die abhängigen Datensätze aus B erhalten möchte)
Ist das überhaupt möglich? Und wenn ja wie?
Gruss Peter
Hallo Peter
Nun versuche ich ein Query zu machen, welches mir alle abhängigen Datensätze aus Tabelle B zurückgibt unter der Bedingung dass id_A='x' ist. (Wobei x die ID des Produkts ist, für welches ich die abhängigen Datensätze aus B erhalten möchte)
Ist das überhaupt möglich? Und wenn ja wie?
Ja, Du solltest Dich mit JOIN befassen.
Die Dokumentation Deines Datenbankmanagementsystems (DBMS) hat garantiert Informationen darüber, keiner hier im Forum hat hingegen Informationen darüber, auf welches DBMS sich Deine Frage bezieht :-(
Freundliche Grüsse,
Vinzenz
Es handelt sich um MSSQL!
Gruss
Hallo Peter
Es handelt sich um MSSQL!
Fahnde bitte in der SQL Server-Onlinedokumentation (immer eine gute Idee, so etwas mitzuinstallieren) nach der Dokumentation zu SELECT, und dort in der FROM-Klausel.
Alternativ kannst Du auch den SQL Query Analyzer öffnen, SELECT eingeben, markieren und F1 drücken.
Freundliche Grüsse,
Vinzenz
OK, ich hab da was hingekriegt. Ist das nun die Lösung eines Anfängers oder ist das völlig in Ordnung?
SELECT B.name
FROM B
INNER JOIN
C ON B.id_B = C.id_B
WHERE C.id_A = 'x'
Gruss Daniel
Hallo Peter oder Daniel ;-)
SELECT B.name
FROM B
INNER JOIN
C ON B.id_B = C.id_B
WHERE C.id_A = 'x'
Das ist völlig in Ordnung
und sieht nicht nach Anfängerlösung aus :-)
Deine Lösung setzt vernünftigerweise voraus,
was Du am Anfang beschrieben hast, dass id_A
Fremdschlüssel in Tabelle C ist (Primärschlüssel
in Tabelle A) und verwendet nicht mehr Tabellen
als notwendig.
Den Hinweis von Ilja bezüglich des mit an
Sicherheit grenzender Wahrscheinlichkeit
überflüssigen Feldes C.id_C solltest Du aber
auch beachten.
Freundliche Grüsse,
Vinzenz
Hallo Peter oder Daniel ;-)
Da verwechselt man doch glatt das Pseudonym ;-)
Den Hinweis von Ilja bezüglich des mit an
Sicherheit grenzender Wahrscheinlichkeit
überflüssigen Feldes C.id_C solltest Du aber
auch beachten.
Ich hab das absichtlich gemacht, da ich Relationen einfacher hinzufügen und löschen kann. Zudem gibts noch eine Historie-Funktion
Danke für die Tipps!
Gruss Peter
yo,
SELECT a.name, b.name FROM a, b, c
WHERE a.id_A=c.id_A AND b.id_B=c.id_B
AND a.id_A=x;
noch ein kleiner tipp: die spalte id_c ist aller wahrscheinlichkeit überflüssing, da ein zusammengesetzter schlüssel die datensätze in der tabelle c wohl auch eindeutig identifizieren.
Ilja