Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Mehrfach SQL-Abfrage auf eine Tabellenspalte

Frage Entwicklung Datenbanken

Mitglied: TheToxic

TheToxic (Level 1) - Jetzt verbinden

19.04.2010, aktualisiert 13:44 Uhr, 7674 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
Bitte warten ..
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
Bitte warten ..
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
Bitte warten ..
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;
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Datenbanken
SUM oder AVG in SQL Abfrage dauert viel zu lange warum? (5)

Frage von samet22 zum Thema Datenbanken ...

Datenbanken
gelöst SQL-Abfrage mit MAX() (9)

Frage von FrAmEr zum Thema Datenbanken ...

Datenbanken
gelöst Schleifen in SQL-Abfrage bei 2 Tabellen (2)

Frage von Aximand zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...