Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Verschachtelte SQL Abfrage (https://www.delphipraxis.net/194283-verschachtelte-sql-abfrage.html)

Walter Landwehr 6. Nov 2017 09:59

Datenbank: Firebird • Version: 2,5,5 • Zugriff über: IBO / IBExpert

Verschachtelte SQL Abfrage
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo SQL Spezis,

ich habe eine Tabelle (Buchhaltung) worin es die Felder Kontonummer und Gegenkontonummer gibt.

Ich möchte nun in einem SQL Statement ermitteln alle Kontonummern und Gegenkontonummer die in den Datensätzen vorkommt.
Für die Kontonummer ist es einfach.
Delphi-Quellcode:
SELECT Kontonummer, COUNT(Kontonummer)
FROM tbl_buchhaltung
GROUP BY Kontonummer
HAVING ( COUNT(Kontonummer) > 0 )
Wir mache ich es aber mit Kontonummer und Gegenkontonummer.

Jedes Konto darf als Ergebnis nur einmal vorkommen. (siehe Anlage)

jobo 6. Nov 2017 10:03

AW: Verschachtelte SQL Abfrage
 
so ungefähr

Code:
select kontonummer, sum(anzahl) from (
seölct kontonummer, count(*) as Anzahl from tabelle group by kontonummer
union all
seölct gegenkontonummer, count(*) from tabelle group by gegenkontonummer
) x

mkinzler 6. Nov 2017 10:12

AW: Verschachtelte SQL Abfrage
 
SQL-Code:
select
  distinct konto
from
  (
      select distict konto from <tabelle>
    union
      select distinct gegenkonto as konto from <Tabelle>
  );

TBx 6. Nov 2017 10:20

AW: Verschachtelte SQL Abfrage
 
Den Union-Ansatz würde ich auch wählen, ich verstehe die Aufgabe so, dass alle Konten herausgefunden werden sollen, egal ob sie als Konto oder als Gegenkonto verwendet wurden.
Allerdings kann man sich hier den Subselect sparen, da der Union als default ein UNION DISTINCT ist.

SQL-Code:
      select distinct konto from tbl_buchhaltung
    union
      select gegenkonto from tbl_buchhaltung

jobo 6. Nov 2017 10:22

AW: Verschachtelte SQL Abfrage
 
Soll denn nicht gezählt werden?

mkinzler 6. Nov 2017 10:30

AW: Verschachtelte SQL Abfrage
 
Ist m.E. nicht notwendig. Dient wohl nur dazu Dupletten auszufiltern, was durch das DISTINCT ja gemacht werden sollte.

p80286 6. Nov 2017 10:59

AW: Verschachtelte SQL Abfrage
 
Zitat:

Zitat von TBx (Beitrag 1385315)
Den Union-Ansatz würde ich auch wählen, ich verstehe die Aufgabe so, dass alle Konten herausgefunden werden sollen, egal ob sie als Konto oder als Gegenkonto verwendet wurden.

das wäre eine Möglichkeit, was aber wenn implizit gefragt wurde ob eine Kontonummer sowohl ein Konto als auch ein Gegenkonto repräsentiert?

Gruß
K-H

TBx 6. Nov 2017 11:07

AW: Verschachtelte SQL Abfrage
 
Zitat:

Zitat von p80286
.. was aber wenn implizit gefragt wurde ob eine Kontonummer sowohl ein Konto als auch ein Gegenkonto repräsentiert?

Was nun genau benötigt wird, kann uns nur der TE sagen.

Walter Landwehr 6. Nov 2017 11:50

AW: Verschachtelte SQL Abfrage
 
benötigt wird wie es mkinzler schon geschrieben hat.

Walter Landwehr 6. Nov 2017 12:00

AW: Verschachtelte SQL Abfrage
 
Bei diesen Statement:
Delphi-Quellcode:
select
   distinct kontonummer
from
   (
       select distinct kontonummer from tbl_buchhaltung
     union
       select distinct gegenkontonummer as kontonummer from tbl_buchhaltung
   );
kommt diese Fehlermeldung:

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, column 1.
distinct


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr.
Seite 1 von 3  1 23      

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