Top-Themen

Aktuelle Themen (A bis Z)

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 LEFT JOIN mit 3 Tabellen - MySQL 5.1

Mitglied: Dirmhirn

Dirmhirn (Level 2) - Jetzt verbinden

07.10.2011, aktualisiert 12:31 Uhr, 3950 Aufrufe, 2 Kommentare

Hi!

Erstelle gerade eine Datenbank für interne Produkttests.

Man kann Produkte (Sitze) anlegen und mit verschiedenen Testkriterien/Parametern verknüpfen. Nach dem Test kann man die Ergebbnisse in die Datenbank eintragen.

3 Tabellen:
own
- ID_parameter
- ID_seat

parameter
- ID_parameter
- description
- ...

test
- ID_parameter
- ID_seat
- ID_vehicle
- test_result
- ...

zu jedem ID_seat gibt es genau einen Eintrag pro ID_parameter in `own`
zu jeder ID_seat & ID_vehicle kombi gibt es maximal einen eintrag mit ID_parameter in `test`

jetzt kann es aber vorkommen, dass in die Own-Tabelle neue Verknüpfungen eingetragen werden. Mein Ziel ist es nun alle vorhandenen test_results und alle neu verknüpften Parameter für eine bestimmte ID_Seat & Vehicle.

eigentlich dachte es geht mit:
01.
SELECT *  
02.
FROM (parameter LEFT JOIN own USING(ID_parameter)) LEFT JOIN test USING(ID_parameter) 
03.
WHERE (own.ID_seat = xx) or (test.ID_seat = xx AND test.ID_vehicle = yy)
das wird aber ein CROSS JOIN oder so...

Folgende Lösung funktioniert:
01.
SELECT ID_parameter, ID_seat, description, `type`, max(test_result) 
02.
FROM ( 
03.
    (SELECT parameter.ID_parameter, ID_seat, description, `type`, NULL AS test_result 
04.
    	FROM parameter LEFT JOIN own USING (ID_parameter) 
05.
    	WHERE ID_seat = xx) 
06.
    UNION 
07.
    (SELECT parameter.ID_parameter, ID_seat, description, `type`, test_result 
08.
    	FROM parameter LEFT JOIN test USING (ID_parameter) 
09.
    	WHERE ID_seat = xx AND ID_vehicle = yy) 
10.
    ) AS derived_tab 
11.
GROUP BY ID_parameter
gibt es eine effizientere Lösung?

es ist eine MySQL 5.1 Datenbank.

sg Dirm
Mitglied: MadMax
10.10.2011 um 13:29 Uhr
Hallo Dirm,

da in der own-Tabelle ja alle Verknüpfungen ID_parameter/ID_seat drin sind, brauchst Du zur own-Tabelle kein left join. Die Tabelle test muß dann nur noch über ID_seat mit own verknüpft werden und Du hast keinen cross join mehr:

01.
SELECT	*  
02.
FROM	parameter 
03.
	JOIN own on parameter.ID_parameter = own.ID_parameter 
04.
	LEFT JOIN test on own.ID_parameter = test.ID_parameter and own.ID_seat = test.ID_seat and test.ID_vehicle = yy 
05.
WHERE	own.ID_seat = xx
Gruß, Mad Max
Bitte warten ..
Mitglied: Dirmhirn
11.10.2011 um 18:14 Uhr
Hi Mad Max,

Danke für den Input - werde den Code umbauen.

Sg Dirm
Bitte warten ..
Ähnliche Inhalte
Datenbanken
Inner join über 3 Tabellen
Frage von Fitzel69Datenbanken10 Kommentare

Hallo zusammen, ich habe folgendes Problem: Ich muß aus unserem ERP System mehrere Infos heraus ziehen. Hierfür benötige ich ...

Datenbanken
SQL LEFT JOIN in Spalten
gelöst Frage von StfnCstrDatenbanken5 Kommentare

Hallo, ich sehe mal wieder den Wald vor lauter Bäumen nicht. Ich habe 2 Tabellen Tabelle 1: PK, Vorname, ...

Datenbanken
MySQL - Join
Frage von ThoomaasDatenbanken4 Kommentare

Hallo alle zusammen! Ich habe zwei Tabellen in meiner Datenbank. Die eine beinhaltet Teams und einen Code zum Team ...

Datenbanken

Mysql Select Befehl über 3 Tabellen?

gelöst Frage von rdklieDatenbanken6 Kommentare

Guten Tag zusammen! Ich habe eine kleine Frage bezüglich Mysql. Zur Fragestellung: Die Frage wäre "Welche Mitglieder organisieren Veranstaltungen ...

Neue Wissensbeiträge
Linux Netzwerk

Installation eines Logservers mit Loganalyzer als Debian-VM auf Hyper-V

Anleitung von lcer00 vor 17 StundenLinux Netzwerk

Zuerst sei auf den schönen Beitrag von aqui hier im Forum verwiesen, in dem die loganalyzer-installation bereits beschrieben ist: ...

Humor (lol)
Antennagate 2018
Information von magicteddy vor 17 StundenHumor (lol)2 Kommentare

Da haut der angekaute Elektronikhersteller die teuersten Geräte auf den Markt und bekommt anscheinend die Basics mal wieder nicht ...

Datenschutz

Die Datenkrake Google verlängert ihr Arme mal wieder ein wenig, automatische Anmeldung

Tipp von magicteddy vor 1 TagDatenschutz4 Kommentare

Benutzer mit einem Google Account und gespeicherten Zugangsdaten werden von chrome 69 automatisch bei Google angemeldet, natürlich alles zum ...

Verschlüsselung & Zertifikate
Meine Wissenssammlung zu Bitlocker
Erfahrungsbericht von DerWoWusste vor 2 TagenVerschlüsselung & Zertifikate3 Kommentare

Die Motivation für diesen Beitrag waren die vielen Posts rund um dieses Thema, die deutlich machen, wie viele Einzelaspekte ...

Heiß diskutierte Inhalte
Windows Netzwerk
VPN geht, RD nicht
Frage von bigeasyWindows Netzwerk19 Kommentare

Hallo zusammen Ich hab hier ein Problem mit einer Remotedesktop-Verbindung, ich hoffe, jemand kann mir hier bitte weiterhelfen: Wähle ...

Firewall
Wesyb Offline
Frage von DkuehlbornFirewall14 Kommentare

Hallo Kollegen, ein Kunde hat von Wesyb die Sicherheitslösung im Einsatz. Seit August scheint deren Internetseite nicht mehr verfügbar ...

Video & Streaming
DVD auf Festplatte sichern
Frage von Thor01Video & Streaming13 Kommentare

Hallo, mittlerweile hat meine DVD Sammlung ein alter erreicht wo die eine oder andere DVD schon das Zeitliche gesegnet ...

Video & Streaming
Film aus Mediathek vom Laptop aufs TV streamen?
Frage von imebroVideo & Streaming12 Kommentare

Hallo, ich möchte gerne einen Film - z.B. aus der Mediathek des ZDF - auf mein TV-Gerät streamen und ...