AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SQL-Statement

Ein Thema von barnti · begonnen am 12. Sep 2005 · letzter Beitrag vom 12. Sep 2005
Antwort Antwort
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#1

SQL-Statement

  Alt 12. Sep 2005, 13:34
Datenbank: Oracle • Zugriff über: odbc
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...
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: SQL-Statement

  Alt 12. Sep 2005, 13:51
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 Mfg, alcaeus[/edit]
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#3

Re: SQL-Statement

  Alt 12. Sep 2005, 14:04
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...
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: SQL-Statement

  Alt 12. Sep 2005, 16:14
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üß
Gruß,

Barnti
  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 09:26 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