Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL-Statement (https://www.delphipraxis.net/53213-sql-statement.html)

barnti 12. Sep 2005 13:34

Datenbank: Oracle • Zugriff über: odbc

SQL-Statement
 
Hallo Gemeinde,

ich bin dabei ein SQL-Statement zu formulieren. Diese sollte folgendes Ergebnis liefern:

Ich möchte zwei Tabellen miteinander verknüpfen. Das Select soll mir alle Datensätze der einen Tabelle zurückliefern, die in der verknüpften Tabelle mehr als einen Record hat.
Ich stehe grad auf dem Schlauch...

Flocke 12. Sep 2005 13:51

Re: SQL-Statement
 
SQL-Code:
select Tabelle1.Id, count(Tabelle2.Id)
from Tabelle1
inner join Tabelle2 on Tabelle2.Link=Tabelle1.Id
having count(Tabelle2.Id)>1
Richtige Tabellen- und Feldnamen musst du einsetzen.

[edit=alcaeus]code- durch sql-Tags ersetzt :stupid: Mfg, alcaeus[/edit]

Robert_G 12. Sep 2005 14:04

Re: SQL-Statement
 
Zitat:

Zitat von Flocke
SQL-Code:
select Tabelle1.Id, count(Tabelle2.Id)
from Tabelle1
inner join Tabelle2 on Tabelle2.Link=Tabelle1.Id
having count(Tabelle2.Id)>1
Richtige Tabellen- und Feldnamen musst du einsetzen.

Und die Gruppierung nicht vergessen.
Da Gruppierungen den Optimizer ad absurdum führen, wäre ich für einen ähnlichen Weg wie Flocke: Nur die PKs der betreffenden Datensätze holen... (Also Lösung 2)
SQL-Code:
SELECT a.Id
      ,a.Feld1
      ,a.Feld2
      ,a.Feld3
      ,a.Feld4
      ,a.Feld5
FROM  TableA a
      ,TableB b
WHERE b.ForeignKey(+) = a.Id
GROUP BY a.Id
         ,a.Feld1
         ,a.Feld2
         ,a.Feld3
         ,a.Feld4
         ,a.Feld5
HAVING COUNT(DISTINCT b.Id) > 1
SQL-Code:
SELECT a.Id
FROM  TableA a
      ,TableB b
WHERE b.ForeignKey(+) = a.Id
GROUP BY a.Id
HAVING COUNT(DISTINCT b.Id) > 1
Prüfe ob du ohne forcierte Eindeutigkeit beim Zählen auskommst. Das ist nämlich nach der Gruppierung die zweite halb angezogene Handbremse...

barnti 12. Sep 2005 16:14

Re: SQL-Statement
 
Hi,

ok,danke! Ich habe es etwas anders gelöst:

Tabelle mit sich selbst gejoint. Anschließend nach doppelten Einträgen (IDs) gesucht.

Danke + Tschüß


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:38 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 by Thomas Breitkreuz