![]() |
Datenbank: Access • Version: 2010 • Zugriff über: ADO
Hilfe bei einer SQL Abfrage für Access
Hallo zusammen,
haben wir hier einen Access Experten, der mir vielleicht bei folgendem SQL Problem helfen kann? Ich habe 2 Tabellen: Kunden: KDNummer Name … Vorgang: KDNummer VorgangNr … Nun möchte ich per SQL eine Abfrage erstellen die mir pro Kunde (aus Tabelle Kunde) die Anzahl der gefundenen Vorgänge (aus Tabelle Vorgang) liefert: Also in etwa: Müller|5 Maier|7 Schulze|3 Ich muss also die beiden Tabellen joinen UND aus der 2. Tabelle den Count von VorgangNr erhalten. :( Kann mir hier jemand helfen? Vielen Dank im voraus :-D |
AW: Hilfe bei einer SQL Abfrage für Access
Hallo,
hier mal ein Link vielleicht ist was brauchbares dabei: ![]() Bis bald Chemiker |
AW: Hilfe bei einer SQL Abfrage für Access
SQL-Code:
Aber: Mehrere Kunden gleichen Namens können hierbei aber nicht mehr auseinander gehalten werden.
select k.name, count(*) as anzahl
from kunden k inner join vorgang v on k.kdnummer = v.kdnummer group by k.name order by k.name Bei der Ausgabe wäre es besser, auch die Kundennummer mit auszugeben:
SQL-Code:
Achso: ungetestet hingedaddelt.
select k.kdnummer, k.name, count(*) as anzahl
from kunden k inner join vorgang v on k.kdnummer = v.kdnummer group by k.kdnummer, k.name order by k.name, k.kdnummer |
AW: Hilfe bei einer SQL Abfrage für Access
Hi,
Sorry ich hatte die entscheidende Information gar nicht gegeben :cry: In der 2. Tabelle kann die Vorgangsnummer für einen Kunden mehrfach vorkommen vorkommen. Ich möchte aber NUR die Anzahl der unterschiedlichen Vorgangsnummern pro Kunde haben (daher dinstinct) und NICHT die Gesamtanzahl. Hast Du dafür auch eine Lösung? |
AW: Hilfe bei einer SQL Abfrage für Access
Im Prinzip geht es so:
Delphi-Quellcode:
Ich weiß nicht, ob Access das kann.
select custno,
count(distinct actionno) as actionnocount from countcustnoactionno group by custno Wenn es in Access nicht geht, musst Du die Schritte unterteilen und erst die eindeutigen Vorgänge selektieren und dann zählen, also 2 SQL verschachteln. |
AW: Hilfe bei einer SQL Abfrage für Access
Falls es nicht klappt versuch es mit [DBName].[FeldName]. Access ist da manchmal eigen.
Gruß K-H |
AW: Hilfe bei einer SQL Abfrage für Access
Zitat:
|
AW: Hilfe bei einer SQL Abfrage für Access
Zitat:
Gibt es eine Fehlermeldung? Gruß K-H |
AW: Hilfe bei einer SQL Abfrage für Access
Code:
LG M
SELECT k.kdnummer
,k.name ,V.anzahl FROM kunden k INNER JOIN ( SELECT kdnummer ,Count(*) AS Anzahl FROM vorgang GROUP BY kdnummer ) V ON V.kdnummer = k.kdnummer |
AW: Hilfe bei einer SQL Abfrage für Access
@markus888
Vielen Dank für das SQL Statement. Jedoch wird hierbei nicht berücksichtigt, dass ich NUR die Anzahl der unterschiedlichen Vorgangsnummern (also einen distinct count) pro Kunde haben möchte und NICHT die Gesamtanzahl. |
AW: Hilfe bei einer SQL Abfrage für Access
Ich verstehe Deine Aufgabenstellung nicht mehr, könntest Du sie bitte nocheinmal als komplette Frage, möglichst präzise, ausformulieren?
SQL-Code:
Keine Ahnung, ob Access mit dieser Syntax zurechtkommt (vermutlich aber ja).
select k.kdnummer, k.name, count(*) as anzahl from kunden k,
( select distinct kdnummer, vorgangnr from vorgang ) v where k.kdnummer = v.kdnummer group by k.kdnummer, k.name order by k.kdnummer, k.name |
AW: Hilfe bei einer SQL Abfrage für Access
Aufgabenstellung:
Ich habe 2 Tabellen (Kunden und Vorgang) Kunden: KDNummer Name … Vorgang: KDNummer VorgangNr … Nun möchte ich per SQL eine Abfrage erstellen die mir pro Kunde (aus Tabelle Kunde) die Anzahl der gefundenen Vorgänge (aus Tabelle Vorgang) liefert. Jedoch möchte ich aus der Tabelle Vorgang nur die Anzahl der unterschiedlichen Vorgangsnummern haben. Mehrfach vorkommende Vorgangsnummern sollen nur einmal (distinct) gezählt werden: Daten in der Tabelle Tabelle Vorgang Kd.-Nr. | Vorgang 4711 | 1 4711 | 2 0815 | 4 4711 | 3 4711 | 1 0815 | 4 4711 | 2 Als Ergebnis wünsche ich mir hier 4711 | 3 0815 | 1 Ich hoffe, so ist es verständlich :-D EDIT: Deine obige Lösung erfüllt bereits meine Anforderung. Vielen Dank! |
AW: Hilfe bei einer SQL Abfrage für Access
Sollte damit gehen:
SQL-Code:
select k.kdnummer, count(*) as anzahl from kunden k,
( select distinct kdnummer, vorgangnr from vorgang ) v where k.kdnummer = v.kdnummer group by k.kdnummer order by k.kdnummer |
AW: Hilfe bei einer SQL Abfrage für Access
Code:
So sollte es auch funktionieren. :)
SELECT K.*,
count(v.vorgang) FROM Kunde K LEFT JOIN VORGANG V ON (V.KdNr = K.KdNr) ORDER BY k.kdnr; |
AW: Hilfe bei einer SQL Abfrage für Access
Hi,
leider erfüllt dieses Statement nicht die Bedingung, dass die Vorgangsnummern pro Kunde nur einmal gezählt werden sollen. Ungeachtet also ob die Vorgangsnummer mehrfach vorkommt, darf er nur einmal zählen :| Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 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