Kalle_B: MySQL distinct

Hallöle,

habe ein Verständnisproblem und komme nicht auf die Lösung.

In einer Tabelle habe ich einen UNIQUE Key auf besucher_id, aussteller_id

die Abfrage

select
 count(*)
,count(CONCAT( CAST(kon1.besucher_id AS CHAR), '_', CAST(kon1.aussteller_id AS CHAR)))
from tm_kontakte kon1
where owner_id=5 AND ( prio_1=1 OR prio_2=1 )

ergibt 3665 3665. Soweit gut.

count(*)
,count(DISTINCT CONCAT( CAST(kon1.besucher_id AS CHAR), '_',
                        CAST(kon1.aussteller_id AS CHAR)))

ergibt jedoch 3665 1028

Die Kombination besucher_id/aussteller_id *kann* doch gar nicht doppelt sein.

Gruß, Kalle

  1. Hallo Kalle,

    count(*)
    ,count(DISTINCT CONCAT( CAST(kon1.besucher_id AS CHAR), '_',
                            CAST(kon1.aussteller_id AS CHAR)))

    wie wäre es, sich in einer temporären Tabelle (oder einem View) das Ergebnis von

    SELECT CONCAT( CAST(kon1.besucher_id AS CHAR),
                   '_',
                   CAST(kon1.aussteller_id AS CHAR)) kombination

    und sich mittels weiterer Abfragen die anzeigen lassen, die mehrfach vorkommen und das in Deiner Tabelle zu überprüfen?

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz,

      und sich mittels weiterer Abfragen die anzeigen lassen, die mehrfach vorkommen und das in Deiner Tabelle zu überprüfen?

      besucher_id und aussteller_id sind vierstellige Zahlen.

      Mit CONCAT( CAST(kon1.besucher_id AS CHAR), '_', CAST(kon1.aussteller_id AS CHAR))

      ergibt sich dieses:  1234_5678

      mit DISTINCT(CONCAT( CAST(kon1.besucher_id AS CHAR), '_', CAST(kon1.aussteller_id AS CHAR)))

      dieses: 1234_56  Zwei Stellen werden abgeschnitten. Wie ist das denn möglich?

      Lieben Gruß, Kalle

      1. Hallo

        besucher_id und aussteller_id sind vierstellige Zahlen.

        Mit CONCAT( CAST(kon1.besucher_id AS CHAR), '_', CAST(kon1.aussteller_id AS CHAR))

        ergibt sich dieses:  1234_5678

        das wundert mich schon.

        mit DISTINCT(CONCAT( CAST(kon1.besucher_id AS CHAR), '_', CAST(kon1.aussteller_id AS CHAR)))

        dieses: 1234_56  Zwei Stellen werden abgeschnitten. Wie ist das denn möglich?

        das auch.

        Schau' Dir bitte an, was

        CONCAT( CONVERT(kon1.besucher_id, CHAR(4)), '_', CONVERT(kon1.aussteller_id, CHAR(4)))

        liefert, gern auch mit DISTINCT

        Freundliche Grüße

        Vinzenz

        1. Hallo

          CONCAT( CONVERT(kon1.besucher_id, CHAR(4)), '_', CONVERT(kon1.aussteller_id, CHAR(4)))

          Ja, nach so etwas habe ich gesucht und dieses gefunden:

          distinct CONCAT( CAST(kon1.besucher_id AS CHAR),'_',CAST(kon1.aussteller_id AS CHAR),13)

          Beide Versionen laufen. Danke.

          Lieben Gruß, Kalle