Frank (no reg): MySQL - Left JOIN - Verbunde datensetze suchen (problem: doppel)

Beitrag lesen

Hallo,

zID  Name
123  Test
123  Blub
123  Keine Ahnung
436  UserBlub
436  Random Scheiß
436  YX Scheiß ZP
436  Weis ich nicht

Wenn ich ab nun nach "scheiß" suchen lassen dann (was auch logisch ist) listet er die zID 2 mal mit allen dazugehöriegen einträgen auf. Jemand eine
Idee das design oder die abfrage zu verbessern ?

Du hast ja auch 2 Datensätze, die "scheiß" beinhalten. Diese haben zufällig beide dieselbe zID. Ich hab keine Ahnung welcher Zweck sich hinter dieser zID verbirgt, das weisst nur du.

Wenn du jetzt nur eimal jede eindeutige (Stichwort: Distinct) zID anzeigen lassen willst, kannst du das tun. Allerdings ohne Name und mittels DISTINCT oder einem GROUP BY zID. Wenn du den Spalte "Name" mit anzeigen willst, welche Inhalt soll es dir denn dann anzeigen, den vom ersten gefundenen, also "Random Scheiß" oder den vom zweiten gefundenen Datensatz "YX Scheiß ZP"? Kurz gesagt, das geht nicht "einfach so" ...

Mit einer korrelierenden Unterabfrage könntest du dir z.b. den Namen

  • mit der geringsten Länge
  • der alphabetisch sortiert zuerst käme
  • der zuerst oder zuletzt eingetragenen
    ausgeben lassen.

Was sollte dir ausgegeben werden und warum. Wenn du das "warum" weisst, kannst du es ggf auch in SQL umsetzen mit Aggregatsfunktionen wie MAX() oder MIN() oder sonstigen Möglichkeiten deines Datenbanksystems.

Die Möglichkeit mit GROUP BY, die mySql dir bietet ist fachlich falsch.

Ciao, Frank