Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Doppelte Datensätze aus Select ausfiltern (https://www.delphipraxis.net/108867-doppelte-datensaetze-aus-select-ausfiltern.html)

Salomon 20. Feb 2008 16:11

Datenbank: MS SQL • Zugriff über: ADO

Doppelte Datensätze aus Select ausfiltern
 
Hallo,
ich baue mir über mehrere Tabellen ein Select zusammen. Dabei werden aber nur Daten aus der ersten Tabelle angezeigt. Allerdings sind einiges Datensätze in der Ergebnismenge doppelt vorhanden.

Mit einem einfachen Distinct geht es leider nicht, da in den Datnesätzen ein Feld vom Typ Text ist. Wie kann ich trotzdem doppelte aussortieren?

Gruß
Marcus

mkinzler 20. Feb 2008 16:13

Re: Doppelte Datensätze aus Select ausfiltern
 
Man könnte Gruppieren, aber um genaue Angaben machen müsste man die Tabellen und den join kennen.

DeddyH 20. Feb 2008 16:13

Re: Doppelte Datensätze aus Select ausfiltern
 
Und wenn Du das Textfeld bei der Abfrage auslässt?

Salomon 20. Feb 2008 16:21

Re: Doppelte Datensätze aus Select ausfiltern
 
Den SQL kann ich leider nicht posten, da der String sehr dynamisch zusammengesetzt wird.

Das ganze sieht so aus (vereinfacht):

TB_Issues
=========
IssueID
TextFeld

TB_Comments
===========
CommentsID
FK_IssueID
CommentTyp

Ein Issue kann nun mehrere Comments haben. Suchen möchte ich z.B. Issues die Comments mit dem Typ xyz haben. Angezeigt werden soll aber nur die Issue, wo auch die Beschreibung, das Textfeld dazu gehört. Weglassen geht also nicht.

Salomon 21. Feb 2008 10:05

Re: Doppelte Datensätze aus Select ausfiltern
 
Hat keiner eine Idee wie Distinct mit Textfeldern geht? Was ich bräuchte wäre quasi ein distinct nur auf den PK.

Bei Group by müssen meine ich alle Felder aufgeführt werden, die auch nach dem Select aufgeführt sind. das scheint auch nicht mit Textfeldern zu gehen.

So würde es gehen, wenn distinct mit Textfeldern klarkommen würde

SQL-Code:
select distinct i.* from tb_issues i, tb_comments c
where c.fk_issueid = i.issueid and c.FK_CommentTypeID = 1
and description like '%help%'

soulies 21. Feb 2008 10:37

Re: Doppelte Datensätze aus Select ausfiltern
 
hoi,

[idee]
Funktioniert die 'distinct' abfrage wenn der datentyp auf 'varchar' geändert wird ?
[/idee]

ich weiß du hast MS SQL aber bei mir funkt es mit MySQL ...


cya

vsti 21. Feb 2008 10:46

Re: Doppelte Datensätze aus Select ausfiltern
 
SQL-Code:
select i.* from tb_issues i
where i.issueid in (select distinct c.fk_issueid from tb_coments c and c.FK_CommentTypeID = 1 and description like '%help%')
so oder so ähnlich sollte es auch bei dir funktionieren

Edit: Format

Codewalker 21. Feb 2008 12:41

Re: Doppelte Datensätze aus Select ausfiltern
 
In deinem Subselect fehlt mindestens das where :wink:

vsti 21. Feb 2008 12:57

Re: Doppelte Datensätze aus Select ausfiltern
 
*hust* Bitte das erste AND durch ein WHERE ersetzen

NormanNG 21. Feb 2008 13:01

Re: Doppelte Datensätze aus Select ausfiltern
 
Hi,

Distinct ist zwar sicher nicht dier perfomateste Lösung, aber die Text-Spalten kann man nach varchar(..) casten, dann gehts auch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:47 Uhr.
Seite 1 von 2  1 2      

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