![]() |
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 |
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.
|
Re: Doppelte Datensätze aus Select ausfiltern
Und wenn Du das Textfeld bei der Abfrage auslässt?
|
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. |
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%' |
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 |
Re: Doppelte Datensätze aus Select ausfiltern
SQL-Code:
so oder so ähnlich sollte es auch bei dir funktionieren
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%') Edit: Format |
Re: Doppelte Datensätze aus Select ausfiltern
In deinem Subselect fehlt mindestens das where :wink:
|
Re: Doppelte Datensätze aus Select ausfiltern
*hust* Bitte das erste AND durch ein WHERE ersetzen
|
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. |
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