![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: Delphi
SQL Abfrage mit verschiedenen Tabellen
Ich bekomme einfach die Abfrage aus 3 verschiedenen Tabellen nicht hin. 2 kann ich verknüpfen, aber wenn ich die 3. mit einbauen will, kommen immer Fehlermeldungen vom SQL.
Hintergrund ist, dass bei den einzelnen Maschinennummern die Anzahl der Datumseinträge, die in SWDATE hinterlegt sind, angezeigt werden sollen. Das geht auch, aber wenn ich statt der KUND_ID dann den Kundennamen aus der Tabelle anzeigen will, bekomme ich das nicht hin. Abfrage, die geht: Hier bekomme ich die Anzahl der Versionen angezeigt mit Maschinennnummer. Es fehlt nur noch der Kundenname
SQL-Code:
Hier bekomme ich die Maschinennummer und den Kunden, aber die Anzahl aus SWDATE fehlt
SELECT V.MANU AS Maschinennummer, COUNT (V.MANU) AS Anzahl FROM MANUS V JOIN SWDATE A ON (A.MANU_ID = V.MANU_ID) GROUP BY V.MANU HAVING(COUNT(a.manu_id));
SQL-Code:
Es ist wahrscheinlich mit einem 2. Join zu lösen, aber alle Versuche schlugen bisher fehl.
SELECT MANUS.MANU AS Maschinennummer, KUNDEN.KUNDENNAME AS Kunde FROM MANUS JOIN KUNDEN ON (MANUS.KUND_ID = KUNDEN.KUND_ID);
Meine Tabellen sehen wie folgt aus:
SQL-Code:
CREATE TABLE "MANUS"
( "MANU_ID" INTEGER NOT NULL, "MANU" CHAR(8), "KUND_ID" INTEGER, PRIMARY KEY ("MANU_ID") ); CREATE TABLE "SWDATE" ( "MANU_ID" INTEGER, "DATUM" DATE ); CREATE TABLE "KUNDEN" ( "KUND_ID" INTEGER NOT NULL, "KUNDENNAME" VARCHAR(100), CONSTRAINT "PK_KUNDEN" PRIMARY KEY ("KUND_ID") ); |
AW: SQL Abfrage mit verschiedenen Tabellen
Zitat:
Ich hab den 2. Join mal schnell reingebastelt:
SQL-Code:
SELECT
V.MANU AS Maschinennummer, COUNT (V.MANU) AS Anzahl FROM MANUS V JOIN SWDATE A ON (A.MANU_ID = V.MANU_ID) JOIN KUNDEN K ON (K.KUND_ID = V.KUND_ID) GROUP BY V.MANU HAVING(COUNT(a.manu_id)); |
AW: SQL Abfrage mit verschiedenen Tabellen
Danke für den Tipp.
Wenn ich das Semikolon drin lasse, dann kommt Token unknown, wenn ich das Semi weglasse, dann Unexpeted End of command. Irgendwas muss da noch nicht mit der Syntax passen.
SQL-Code:
SELECT V.MANU AS Maschinennummer, COUNT (V.MANU) AS Anzahl, V.KUND_ID AS Kunde --> das geht nicht FROM MANUS V JOIN SWDATE A ON (A.MANU_ID = V.MANU_ID) JOIN KUNDEN K ON (K.KUND_ID = V.KUND_ID) GROUP BY V.MANU HAVING(COUNT(a.manu_id)>1) |
AW: SQL Abfrage mit verschiedenen Tabellen
Was soll der Blödsinn mit dem HAVING?
SQL-Code:
SELECT K.KUNDENNAME AS Kunde, V.MANU AS Maschinennummer, COUNT(*) AS Anzahl
FROM MANUS V INNER JOIN SWDATE A ON V.MANU_ID = A.MANU_ID INNER JOIN KUNDEN K ON V.KUND_ID = K.KUND_ID GROUP BY V.MANU, K.KUNDENNAME |
AW: SQL Abfrage mit verschiedenen Tabellen
Zitat:
|
AW: SQL Abfrage mit verschiedenen Tabellen
Nun mit Having und Funktion OK. Ich wollte nur die anzeigen, wo mehr als ein Datum angelegt ist.
Vielen Dank.
SQL-Code:
SELECT K.KUNDENNAME AS Kunde, V.MANU AS Maschinennummer, COUNT(*) AS Anzahl
FROM MANUS V INNER JOIN SWDATE A ON V.MANU_ID = A.MANU_ID INNER JOIN KUNDEN K ON V.KUND_ID = K.KUND_ID GROUP BY V.MANU, K.KUNDENNAME HAVING(COUNT(a.manu_id)>1) |
AW: SQL Abfrage mit verschiedenen Tabellen
und hier nochmal der Schönheit halber...
SQL-Code:
SELECT K.KUNDENNAME AS Kunde, V.MANU AS Maschinennummer, COUNT(*) AS Anzahl
FROM MANUS V INNER JOIN SWDATE A ON V.MANU_ID = A.MANU_ID INNER JOIN KUNDEN K ON V.KUND_ID = K.KUND_ID GROUP BY V.MANU, K.KUNDENNAME HAVING COUNT(*) > 1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz