Mehrfach SQL-Abfrage auf eine Tabellenspalte
Ich beschäftige mich seit kurzem mit MS Acces 2007. Als Langzeitprojekt möchte ich mir eine Inventarisierungsdatenbank für ein Netzwerk einrichten.
Zu meinem Problem:
Ich habe 3 Tabellen mit folgenden Inhalten:
Die Tabelle INV_PC ist über den Schlüssel Monitor_ID mit der Tabelle INV_Monitor und der Spalte ID verbunden. (Beziehung 1:n)
Die Tabelle INV_PC ist über den Schlüssel Hersteller_ID mit der Tabelle Hersteller und der Spalte ID verbunden. (Beziehung n:1)
Die Tabelle INV_Monitor ist über den Schlüssel Hersteller_ID mit der Tabelle Hersteller und der Spalte ID verbunden. (Beziehung n:1)
Ich möchte in einer Abfrage alle Informationen aus allen drei Tabellen abfragen. Ich weiss jedoch nicht wie ich den Hersteller per Inner Join mit beiden Tabellen vergleichen kann.
Die Ausgabe sollte schematisch folgendermaßen aussehen:
z.B.:
Ich hoffe ihr versteh mein Problem und könnt mir helfen.
Zu meinem Problem:
Ich habe 3 Tabellen mit folgenden Inhalten:
- Hersteller
- ID
- Herstellername
- INV_PC
- ID
- Prozessor
- RAM
- Hersteller_ID
- Monitor_ID
- INV_Monitor
- ID
- Modell
- Größe
- Hersteller_ID
Die Tabelle INV_PC ist über den Schlüssel Monitor_ID mit der Tabelle INV_Monitor und der Spalte ID verbunden. (Beziehung 1:n)
Die Tabelle INV_PC ist über den Schlüssel Hersteller_ID mit der Tabelle Hersteller und der Spalte ID verbunden. (Beziehung n:1)
Die Tabelle INV_Monitor ist über den Schlüssel Hersteller_ID mit der Tabelle Hersteller und der Spalte ID verbunden. (Beziehung n:1)
Ich möchte in einer Abfrage alle Informationen aus allen drei Tabellen abfragen. Ich weiss jedoch nicht wie ich den Hersteller per Inner Join mit beiden Tabellen vergleichen kann.
Die Ausgabe sollte schematisch folgendermaßen aussehen:
z.B.:
PC-ID | Prozessor | RAM | PC-Hersteller | Monitor-ID | Modell | Größe | Monitor-Hersteller |
---|---|---|---|---|---|---|---|
1 | AMD | 2GB | DELL | 3 | Syncmaster | 22'' | Samsung |
2 | Intel | 1GB | Acer | 5 | T1350 | 19'' | Futjisu Siemens |
Ich hoffe ihr versteh mein Problem und könnt mir helfen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 140948
Url: https://administrator.de/contentid/140948
Ausgedruckt am: 21.11.2024 um 23:11 Uhr
4 Kommentare
Neuester Kommentar
select h.*, ipc.*, imon.* from hersteller h, inv_pc ipc, inv_monitor imon where h.id=ipc.hersteller_id and h.id=imon.hersteller_id
wo war jetzt das problem? Ok, wie du das in Access einbaust kann ich dir mangels Access nicht sagen - aber iirc. konnte man dort auch richtige SQL-Statements eintragen...
die alternative wäre
select h1.herstellername,h2.herstellername,... from hersteller h1, hersteller h2,... where ipc.hersteller_ID=h1.id and ipc.monitor_id=imon.id and imon.hersteller_id=h2.id
wo war jetzt das problem? Ok, wie du das in Access einbaust kann ich dir mangels Access nicht sagen - aber iirc. konnte man dort auch richtige SQL-Statements eintragen...
die alternative wäre
select h1.herstellername,h2.herstellername,... from hersteller h1, hersteller h2,... where ipc.hersteller_ID=h1.id and ipc.monitor_id=imon.id and imon.hersteller_id=h2.id
Hallo TheToxic,
Access habe ich hier zwar nicht, aber folgender Befehl sollte da auch funktionieren:
Das Prinzip ist jedenfalls, daß Du die Herstellertabelle zweimal in die Abfrage bringst, einmal mit INV_PC verknüpft und einmal mit INV_Monitor. Dann werden sie mit unterschiedlichen Alias versehen, damit sie auseinandergehalten werden können (hpc bzw. hmon).
Gruß, Mad Max
Access habe ich hier zwar nicht, aber folgender Befehl sollte da auch funktionieren:
select pc.ID as PC_ID,
pc.Prozessor,
pc.RAM,
hpc.Herstellername as PC_Hersteller,
mon.ID as Monitor_ID,
mon.Modell,
mon.Größe,
hmon.Herstellername as Monitor_Hersteller
from INV_PC pc
inner join INV_Monitor mon on pc.Monitor_ID = mon.ID
inner join Hersteller hpc on pc.Hersteller_ID = hpc.ID
inner join Hersteller hmon on mon.Hersteller_ID = hmon.ID
Das Prinzip ist jedenfalls, daß Du die Herstellertabelle zweimal in die Abfrage bringst, einmal mit INV_PC verknüpft und einmal mit INV_Monitor. Dann werden sie mit unterschiedlichen Alias versehen, damit sie auseinandergehalten werden können (hpc bzw. hmon).
Gruß, Mad Max