Abfrage ohne doppelte Werte ausgeben
Ben
- datenbank
-2 Marian0 Ben1 Vinzenz Mai
1 Vinzenz Mai
Hallo!
Aus einer MySQL-Tabelle möchte ich die ersten 3 Meldungen auslesen. Dabei sollte jedoch jeder Name nur einmal vorkommen.
ID Name Text
1 Albert ...
2 Bertram ...
3 Bertram ...
4 Caesar ...
Meine SQL-Abfrage lautet:
"SELECT Name,Text FROM Tabelle ORDER BY ID LIMIT 0,3"
Was muss geändert werden, damit als dritter Datensatz Caesar anstatt Bertram erscheint? Also ein SELECT DISTINCT für nur eine Tabelle und möglichst ohne Zwischenspeicherung in einem Aray o.ä...
Besten Dank im Voraus!
Ben
Hallo Ben,
Aus einer MySQL-Tabelle möchte ich die ersten 3 Meldungen auslesen. Dabei sollte jedoch jeder Name nur einmal vorkommen.
Meine SQL-Abfrage lautet:
"SELECT Name,Text FROM Tabelle ORDER BY ID LIMIT 0,3"
SELECT DISTINCT Name, Text FROM Tabelle ORDER BY ID LIMIT 0,3;
Viele Grüße aus Freiburg,
Marian
Hallo Marian!
Besten Dank für Deine schnelle Antwort.
SELECT DISTINCT Name, Text FROM Tabelle ORDER BY ID LIMIT 0,3;
SELECT DISTINCT Name ... funktioniert wie gewünscht nur halt ohne Text,
SELECT DISTINCT Name, Text ... bringt jedoch leider keinen Unterschied zu meiner Abfrage.
Beste Grüße,
Ben
Hallo Marian,
Aus einer MySQL-Tabelle möchte ich die ersten 3 Meldungen auslesen. Dabei sollte jedoch jeder Name nur einmal vorkommen.
Meine SQL-Abfrage lautet:
"SELECT Name,Text FROM Tabelle ORDER BY ID LIMIT 0,3"
ID Name Text
1 Albert Bert
2 Bertram Bertie
3 Bertram Bert
4 Caesar Gaius Iulius
SELECT DISTINCT Name, Text FROM Tabelle ORDER BY ID LIMIT 0,3;
nein, diese Abfrage liefert _nicht_ das Gewünschte:
Deine Abfrage liefert mit den Beispieldaten
Name Text
------- ------
Albert Bert
Bertram Bertie
Bertram Bert
da der zweite und dritte Datensatz sich unterscheiden.
Nein, ein GROUP BY Name hilft auch nicht, da das Ergebnis in der Spalte Text dann unvorhersagbar ist, wie sich im MySQL-Handbuch nachlesen lässt.
Freundliche Grüße
Vinzenz
Hallo Ben,
Aus einer MySQL-Tabelle möchte ich die ersten 3 Meldungen auslesen. Dabei sollte jedoch jeder Name nur einmal vorkommen.
welche MySQL-Version? Ab 4.1 gibt es eine recht einfache Lösung mit einem Subselect, siehe http://forum.de.selfhtml.org/archiv/2006/3/t124769/#m804136
Meine SQL-Abfrage lautet:
"SELECT Name,Text FROM Tabelle ORDER BY ID LIMIT 0,3"
Die ersten drei sind also die mit der niedrigsten ID.
Du solltest die Lösung, die Du in dem von mir verlinkten Posting findest, leicht an Dein Problem anpassen können, die entsprechende MySQL-Version vorausgesetzt.
Freundliche Grüße
Vinzenz