Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL-String ohne doppelte Werte ausgeben (https://www.delphipraxis.net/46611-sql-string-ohne-doppelte-werte-ausgeben.html)

Tau 28. Mai 2005 01:50

Datenbank: MS-SQL • Zugriff über: ADO

SQL-String ohne doppelte Werte ausgeben
 
Hallo Leute

habe auch wieder einmal ein Problem.

Ich möcht aus einer Spalte alle Daten anzeigen lassen
ohne das es doppelte Werte in der Ausgabe gibt.

Bis jetzt habe ich vollgenden SQL-String

SQL-Code:
SELECT Tabelle.FeldNr, Tabelle.FeldID
FROM Tabelle
WHERE (((Tabelle.FeldNr) Not In (SELECT [FeldNr] FROM [Tabelle] As Tmp GROUP BY [FeldNr] HAVING Count(*)>1 )))
ORDER BY Tabelle.FeldNr
leider werden die Doppelten Datensätze nicht mit angezeigt. :wall: :wall:

für Tipps oder Anregungen währe ich sehr Dankbar

schöne Grüsse
Tau

Albi 28. Mai 2005 06:58

Re: SQL-String ohne doppelte Werte ausgeben
 
Hallo,

ich würde das so schreiben.

SQL-Code:
SELECT Tabelle.FeldNr, Tabelle.FeldID
FROM Tabelle
WHERE (((Tabelle.FeldNr) In (SELECT [FeldNr] FROM [Tabelle] Where [FeldNr] HAVING Count(FeldNr)>1 )))
ORDER BY Tabelle.FeldNr
Group by FeldNr, FeldID
Ich habe das jetzt nicht getestet so sollte das aber gehen.

marabu 28. Mai 2005 07:09

Re: SQL-String ohne doppelte Werte ausgeben
 
Hallo tau,
Zitat:

Zitat von Tau
Ich möcht aus einer Spalte alle Daten anzeigen lassen ohne das es doppelte Werte in der Ausgabe gibt.

Deinen Wunsch würde ich so umsetzen:

SQL-Code:
SELECT DISTINCT FeldNr FROM TABELLE ORDER BY FeldNr
Dein SQL-Statement suggeriert aber eher, dass du alle Sätze der Tabelle finden möchtest, deren FeldNr mehr als einmal vorkommt. Von dieser Ergebnismenge möchtest du die Spalten FeldNr und FeldID geordnet nach FeldNr ausgeben.

SQL-Code:
SELECT FeldNr, FeldID FROM Tabelle WHERE FeldNr IN (
  SELECT FeldNr FROM Tabelle GROUP BY FeldNr HAVING COUNT(FeldNr) > 1
) ORDER BY FeldNr
Wenn ich total daneben liege, dann vergiss einfach, was ich geschrieben habe.

Grüße vom marabu

Bebe 28. Mai 2005 07:31

Re: SQL-String ohne doppelte Werte ausgeben
 
Hallo Tau,

wenn ich es richtig verstehe, ist das Feld "FeldID" einzigartig.

Dann würde ich auf das Feld verzichten und nur noch ...

SQL-Code:
SELECT Tabelle.FeldNr
FROM Tabelle
GROUP BY Tabelle.FeldNr;
schreiben.

Dein SQL-String unterdrückt alle doppelten Einträge durch
SQL-Code:
[(((Tabelle.FeldNr) Not In (SELECT [FeldNr] FROM [Tabelle] As Tmp GROUP BY [FeldNr] HAVING Count(*)>1 )))]
, wie auch Dein Ergebnis aussieht.
Wenn Du das "Not" vor "In" entfernst, dann würden nur noch die doppelten Einträge ausgegeben werden.

Beides willst Du aber nicht. Deswegen ohne FeldID und Where ...

Außer das FeldID wird benötigt, dann wird es schwierig.

Ich hoffe ich konnte Dir helfen.

Gruß
Bebe

MarkusB 28. Mai 2005 08:02

Re: SQL-String ohne doppelte Werte ausgeben
 
Mion Tau!

Dein SQL-Statment lässt vermuten, dass du aus deiner Tabelle nur die Datensätze mit einer FeldNr, die nur einmal in der Tabelle vorkommt, rausfiltern willst. Das würde ich folgendermaßen versuchen:

SQL-Code:
Select FeldNr, FeldID from tabelle
Where FeldNr in (Select FeldNr from Tabelle
                 Group by FeldNr
                 Where count(FeldNr) = 1)
Viele Grüße
Markus
:gruebel:

Tau 28. Mai 2005 17:59

Re: SQL-String ohne doppelte Werte ausgeben
 
Hallo alle zusammen

Danke für die vielen Anregungen. :thumb:

Ich hatte wohl gestern zur später stunde den
Wald vor lauter Bäume nicht mehr gesehen.

Bebe -> Dein Ansatz hat mich auf die richtige Idee gebracht.

Die Lösung:
SQL-Code:
SELECT FeldNr
FROM Tabelle
GROUP BY FeldNr
HAVING (NOT (FeldNr IS NULL))
Danke an alle :witch: :witch:
schöne Grüsse
Tau


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:22 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