AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL Abfrage mit verschiedenen Tabellen
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Abfrage mit verschiedenen Tabellen

Ein Thema von zeras · begonnen am 26. Sep 2010 · letzter Beitrag vom 26. Sep 2010
Antwort Antwort
zeras
Online

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#1

SQL Abfrage mit verschiedenen Tabellen

  Alt 26. Sep 2010, 18:36
Datenbank: Firebird • Version: 2.5 • Zugriff über: Delphi
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
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)); Hier bekomme ich die Maschinennummer und den Kunden, aber die Anzahl aus SWDATE fehlt
SELECT MANUS.MANU AS Maschinennummer, KUNDEN.KUNDENNAME AS Kunde FROM MANUS JOIN KUNDEN ON (MANUS.KUND_ID = KUNDEN.KUND_ID); Es ist wahrscheinlich mit einem 2. Join zu lösen, aber alle Versuche schlugen bisher fehl.

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")
);
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain

Geändert von mkinzler (26. Sep 2010 um 18:40 Uhr) Grund: SQL-Tags eingefügt
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

AW: SQL Abfrage mit verschiedenen Tabellen

  Alt 26. Sep 2010, 19:00
aber wenn ich die 3. mit einbauen will, kommen immer Fehlermeldungen vom SQL.
Es ist wahrscheinlich mit einem 2. Join zu lösen, aber alle Versuche schlugen bisher fehl.
Fehlermeldungen ??

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));
  Mit Zitat antworten Zitat
zeras
Online

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#3

AW: SQL Abfrage mit verschiedenen Tabellen

  Alt 26. Sep 2010, 19:12
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)
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain

Geändert von zeras (26. Sep 2010 um 19:26 Uhr)
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: SQL Abfrage mit verschiedenen Tabellen

  Alt 26. Sep 2010, 19:16
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
  Mit Zitat antworten Zitat
zeras
Online

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#5

AW: SQL Abfrage mit verschiedenen Tabellen

  Alt 26. Sep 2010, 19:17
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
Sorry, hatte noch was weggelassen mit Having. Weiter oben nun das korrekte Having.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
zeras
Online

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#6

AW: SQL Abfrage mit verschiedenen Tabellen

  Alt 26. Sep 2010, 19:20
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)
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: SQL Abfrage mit verschiedenen Tabellen

  Alt 26. Sep 2010, 19:23
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz