gelöst Mehrfach SQL-Abfrage auf eine Tabellenspalte

Mitglied: TheToxic

TheToxic (Level 1)

19.04.2010, aktualisiert 13:44 Uhr, 8704 Aufrufe, 4 Kommentare

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:
  • 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.
Mitglied: maretz
19.04.2010 um 12:44 Uhr
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
Mitglied: TheToxic
19.04.2010 um 13:43 Uhr
nene, so einfach war das nicht gemeint.

Ich möchte den Hersteller des Monitor´s und den Hersteller des PC´s ausgeben und beides in einer Abfrage. Dazu musst bedacht werden, dass jeder PC mehrere Monitore haben kann (deswegen auch die Beziehungen).

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
Mitglied: MadMax
19.04.2010 um 14:43 Uhr
Hallo TheToxic,

Access habe ich hier zwar nicht, aber folgender Befehl sollte da auch funktionieren:
01.
select	pc.ID as PC_ID,
02.
	pc.Prozessor,
03.
	pc.RAM,
04.
	hpc.Herstellername as PC_Hersteller,
05.
	mon.ID as Monitor_ID,
06.
	mon.Modell,
07.
	mon.Größe,
08.
	hmon.Herstellername as Monitor_Hersteller
09.
from	INV_PC pc
10.
	inner join INV_Monitor mon on pc.Monitor_ID = mon.ID
11.
	inner join Hersteller hpc on pc.Hersteller_ID = hpc.ID
12.
	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
Mitglied: TheToxic
19.04.2010 um 15:43 Uhr
Vielen Dank für die schnelle Hilfe.
Ich musste den SQL-Syntax für Access noch ein wenig anpassen, aber nun geht es.

Hier der aktuelle Sytnax
01.
select
02.
	INV_PC.ID as PC_ID,
03.
	INV_PC.Prozessor,
04.
	INV_PC.RAM,
05.
	hpc.Herstellername as PC_Hersteller,
06.
	INV_Monitor.ID as Monitor_ID,
07.
	INV_Monitor.Modell,
08.
	INV_Monitor.Größe,
09.
	hmon.Herstellername as Monitor_Hersteller
10.
from
11.
((INV_PC INNER JOIN INV_Monitor ON INV_PC.Monitor_ID = INV_Monitor.ID)
12.
	INNER JOIN Hersteller AS hpc ON INV_PC.Hersteller_ID = hpc.ID)
13.
	INNER JOIN Hersteller AS hmon ON INV_Monitor.Hersteller_ID = hmon.ID;
Titel: Mehrfach SQL-Abfrage auf eine Tabellenspalte
Content-ID: 140948
Art des Inhalts: Frage
Ausgedruckt am: 19.05.2019 um 10:42:46 Uhr
URL: https://administrator.de/contentid/140948