Supportnet / Forum / Datenbanken
doppelte einträge in mysql DB
Frage
ich möchte eine tabelle auslesen und es soll dabei kein eintrag doppelt vorkommen. so weit so gut, dafür ist ja eigentlich > distinct da.
SELECT distinct name FROM album WHERE kid = '5712'
so funktioniert es ja.
nur ich möchte noch eine id mitbekommen. die spalte heißt einfach id.
kann mir jemand weiterhelfen?
so gehts nicht:
SELECT distinct name,id FROM album WHERE kid = '5712'
gruß
dome85
Antwort 1 von semi
select name,id
from album
where kid='5712'
group by nameAntwort 2 von Trullala
Die Anweisung ist ansich korrekt(SQL92):
SELECT distinct name,id FROM album WHERE kid = '5712'
Also kanns nur an zwei dingen liegen, das Attribut "id" ist nicht vorhanden oder das Programm in dem du auf mysql zugreifst shlüsselt den Befehl nicht richtig um bzw. mysql hat hier ein Problem, wäre nicht das erste mal, da mysql nicht besonders konform zu SQL92 ist. Einfach mal das mysql doc checken.
SELECT distinct name,id FROM album WHERE kid = '5712'
Also kanns nur an zwei dingen liegen, das Attribut "id" ist nicht vorhanden oder das Programm in dem du auf mysql zugreifst shlüsselt den Befehl nicht richtig um bzw. mysql hat hier ein Problem, wäre nicht das erste mal, da mysql nicht besonders konform zu SQL92 ist. Einfach mal das mysql doc checken.
Antwort 3 von draack
Hallo!
@kasper: Das Problem ist, dass das "DISTINCT" sich auf die komplette Zeile des Resultset bezieht. Ich sehe nicht, das MySQL hier nicht SQL92-konform arbeitet.
Die Lösung von semi funktioniert nur wg. der erweiterten "GROUP BY" Funktionalität von MySQL ("id" ist nicht in der "GROUP BY" Klausel) - für z.B. Oracle würde ich hier eine Subquery (die kann MySQL noch nicht) und die ROWID verwenden.
Ciao!
Volker.
@kasper: Das Problem ist, dass das "DISTINCT" sich auf die komplette Zeile des Resultset bezieht. Ich sehe nicht, das MySQL hier nicht SQL92-konform arbeitet.
Die Lösung von semi funktioniert nur wg. der erweiterten "GROUP BY" Funktionalität von MySQL ("id" ist nicht in der "GROUP BY" Klausel) - für z.B. Oracle würde ich hier eine Subquery (die kann MySQL noch nicht) und die ROWID verwenden.
Ciao!
Volker.
Antwort 4 von Trullala
Na ich weis ja nicht was er vor hat, evtl ist es kein syntaktiasches Problem, sondern ein semantisches.
Ich kann ja hier nicht daraus ableiten, dass id ne eindeutige od. mehrfache id ist.Ihr scheint da wohl eher Hellseher zu sein od. Sachen anzunehmen, die schlichtweg nicht da stehen
Ich kann ja hier nicht daraus ableiten, dass id ne eindeutige od. mehrfache id ist.Ihr scheint da wohl eher Hellseher zu sein od. Sachen anzunehmen, die schlichtweg nicht da stehen
Antwort 5 von dome85
@trullala id ist eine eindeutige id. werde semis lösung gleich mal versuchen.
ich arbeite mit php!
gruß und danke
dome85
ich arbeite mit php!
gruß und danke
dome85
Antwort 6 von semi
Wenn Id eindeutig ist, dann sollte Deine Anweisung mit dem DISTINCT funktionieren.
Bei dem mit GROUP BY macht es in diesem Fall keinen Sinn die Id auszugeben, da es eine von vielen ist.
Bei dem mit GROUP BY macht es in diesem Fall keinen Sinn die Id auszugeben, da es eine von vielen ist.
Antwort 7 von dome85
ich weiß nicht warum das mit distinct nicht funktionert hat, das mit group by reicht mir - macht genau, das was ich will!
danke nochmal!
danke nochmal!

