SQL Abfrage über 4 Tabellen
Hallo Zusammen
Ich versuche eine Abfrage über 4 Tabellen zu schreiben, soweit bekomme ich auch alle Daten die ich brauche, allerdings gibt er mir nur den letzten Kundennamen aus der Tabelle vorgänge.Kunde aus und das für alle Ergebnisse, wäre eine Abfrage mit JOIN sinnvoller? Wie würde so eine Abfrage mit JOIN aussehen?
Ich versuche eine Abfrage über 4 Tabellen zu schreiben, soweit bekomme ich auch alle Daten die ich brauche, allerdings gibt er mir nur den letzten Kundennamen aus der Tabelle vorgänge.Kunde aus und das für alle Ergebnisse, wäre eine Abfrage mit JOIN sinnvoller? Wie würde so eine Abfrage mit JOIN aussehen?
SELECT
container.ContainerNR AS ContainerID,
geraete.IMEI,
container.ConfID,
container.ArtID AS Art,
vorgaenge.status,
geraete.LetzteStandort,
kunde.Name as Name,
kunde.Kundennummer,
vorgaenge.aufstellenAm,
vorgaenge.abholenAm
FROM
vorgaenge,
container,
kunde,
geraete
WHERE
container.ContainerNR>0 AND
container.ContainerNR = geraete.ContainerID AND kunde.Kundennummer = vorgaenge.kundennummer AND SUBSTRING_INDEX(vorgaenge.containerID, ' ', 1)
IN( SELECT container.ContainerNR FROM container) AND SUBSTRING_INDEX(vorgaenge.containerID, ' ', -1) IN( SELECT container.ContainerNR FROM container)
GROUP BY
geraete.IMEI,
ContainerID;
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 382116
Url: https://administrator.de/contentid/382116
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
3 Kommentare
Neuester Kommentar
Hi,
ein Join funktioniert prinzipiell so:
willst du mehr Tabellen verknüpft haben so setze einfach ein weiteres Join darunter.
Ggf. danach noch wenn nötig Where, Order by, Group by.
Versuche mal die Groß- und Kleinschreibung einheitlich zu machen.
Eine Übersicht über verschiedene Arten von Joins findest du hier: http://www.datenbanken-verstehen.de/sql-tutorial/sql-joins/
Viele Grüße
ein Join funktioniert prinzipiell so:
Select * from vorgaenge
join kunde on kunde.kundennummer=vorgaenge.Kundennummer
Ggf. danach noch wenn nötig Where, Order by, Group by.
Versuche mal die Groß- und Kleinschreibung einheitlich zu machen.
Eine Übersicht über verschiedene Arten von Joins findest du hier: http://www.datenbanken-verstehen.de/sql-tutorial/sql-joins/
Viele Grüße
Wie schon gesagt ja, bitte explizite Join-Syntax verwenden. Das was du bisher machst ist bereits ein Join aber eben schlechter nachvollziehbar.
Dein GROUP BY ist syntaktisch falsch. In einem GROUP BY müssen alle Spalten aggregiert oder gruppiert werden, das ist hier nicht gegeben. Daher schließe ich mal auf eine alte MySQL-Version, eine neuere Version wird dir korrekterweise die Abfrage nicht mehr ausführen, die alte liefert Müll aus.
Wenn es unterschiedliche Kundennamen zu dem selben Kunden gibt würde der Ausgabewert über die Gruppierung / Aggregierung explizit bestimmt werden, eventuell hilft dir group_concat() weiter, das ist stark abhängig vom verwendeten SQL.
Dein GROUP BY ist syntaktisch falsch. In einem GROUP BY müssen alle Spalten aggregiert oder gruppiert werden, das ist hier nicht gegeben. Daher schließe ich mal auf eine alte MySQL-Version, eine neuere Version wird dir korrekterweise die Abfrage nicht mehr ausführen, die alte liefert Müll aus.
Wenn es unterschiedliche Kundennamen zu dem selben Kunden gibt würde der Ausgabewert über die Gruppierung / Aggregierung explizit bestimmt werden, eventuell hilft dir group_concat() weiter, das ist stark abhängig vom verwendeten SQL.