Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Firebird Select distinct LIST() ist nicht mehr distinct bei LIST (https://www.delphipraxis.net/216669-firebird-select-distinct-list-ist-nicht-mehr-distinct-bei-list.html)

Kostas 7. Feb 2025 17:24

Datenbank: Firebird • Version: 3.0 • Zugriff über: Firebac

Firebird Select distinct LIST() ist nicht mehr distinct bei LIST
 
Hallo Zusammen,

wenn in einem Select LIST vorkommst in meinem Fall eine kommaliste aller Emailadresse zu bekommen, ist der Select nicht meht distinct auch wenn ich den Test über Substring abschneide.

Code:
SELECT DISTINCT ADRESSID,
       (SELECT LIST(K.KONTAKT)
          FROM KONTAKTE K
         WHERE K.ADRESSID = A.ADRESSID
           AND K.GELOESCHT = 0
           AND K.KONTAKTTYP IN (4,8)) AS EMAIL

--       substring((SELECT LIST(K.KONTAKT)
--          FROM KONTAKTE K
--         WHERE K.ADRESSID = A.ADRESSID
--           AND K.GELOESCHT = 0
--           AND K.KONTAKTTYP IN (4,8)) from 1 for 50) AS EMAIL

FROM ADRESS A
...

Hat jemand eine Idee?

IBExpert 7. Feb 2025 17:38

AW: Firebird Select distinct LIST() ist nicht mehr distinct bei LIST
 
das liefert dir innen als result vom list blobs, die muss du dann ggf noch mal cast as varchar
mit blobs ist distinct nicht hilfreich

Kostas 8. Feb 2025 11:49

AW: Firebird Select distinct LIST() ist nicht mehr distinct bei LIST
 
Hallo Holger,

das habe ich auch ausprobiert und auch ein Select über das Select gesetzt, hilft alles nichts. Über ExecuteBlock wird es vermutlich funktionieren. Aber mit LIST habe ich schon viele Probleme festgestellt.

IBExpert 8. Feb 2025 13:48

AW: Firebird Select distinct LIST() ist nicht mehr distinct bei LIST
 
so meinte ich das (ohne das casting macht der den distinct nicht auf dem blb inhalt der von list zurück kommt sondern auf der blob id, die ist nie identisch
Code:
SELECT DISTINCT ADRESSID,
       (SELECT cast(LIST(K.KONTAKT)as varchar(800))
          FROM KONTAKTE K
         WHERE K.ADRESSID = A.ADRESSID
           AND K.GELOESCHT = 0
           AND K.KONTAKTTYP IN (4,8)) AS EMAIL
FROM ADRESS A
...
müsste sonst auch so gehen

Code:
SELECT DISTINCT ADRESSID,
       cast((SELECT LIST(K.KONTAKT)
          FROM KONTAKTE K
         WHERE K.ADRESSID = A.ADRESSID
           AND K.GELOESCHT = 0
           AND K.KONTAKTTYP IN (4,8)) as varchar(800)) AS EMAIL
FROM ADRESS A
...

Kostas 9. Feb 2025 17:36

AW: Firebird Select distinct LIST() ist nicht mehr distinct bei LIST
 
oh verflixt, es funktioniert doch. So hatte ich es auch ausprobiert, anscheinend hatte ich einen anderen Fehler und habe es nicht bemerkt.
Vielen Dank.


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