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

Frage Entwicklung Datenbanken

Mitglied: Dirmhirn

Dirmhirn (Level 2) - Jetzt verbinden

07.10.2011, aktualisiert 12:31 Uhr, 3833 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
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 10 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 14 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...