mysqlabfrage - bitte lesen
backbone
- datenbank
0 comunicout0 backbone0 comunicout0 backbone
0 MAtthias
hi floks,
habe gearde nen kleine gedächtnis problem und wollte euch mal fragen ob ihr mir nicht auf die sprügen helfen könnt.
ich will eine mysqlabfrage starten die aus einer tabelle nicht alle datensätze ausließt sondern nur immer einen, auch wenn es mehrere der gleichen sorte gibt.
hier nen kleines bsp:
Einträge
--------
test
test
test
auto
bus
auto
nun soll die abfrage nicht den inhalt der tabelle ausgeben sondern nur test,auto,bus. wie stelle ich das an?
thx vor help
hi,
dafür gibts das
DISTINCT
nach dem SELECT...
mfg
comunicout
DISTINCT
nach dem SELECT...
habe das so gemacht:
SELECT DISTINCT * FROM room;
funktioniert aber trotzdem nicht.
:(
hi
folgend ein lokaler auszug (mysql):
mysql> select distinct spo_berufsgruppe FROM sponsor;
+-------------------------------------+
| spo_berufsgruppe |
+-------------------------------------+
| Einfach ein paar Buchstaben zu lang |
| Agrarmarkt |
| Musik |
| Computer |
+-------------------------------------+
4 rows in set (0.04 sec)
mysql> select spo_berufsgruppe FROM sponsor;
+-------------------------------------+
| spo_berufsgruppe |
+-------------------------------------+
| Einfach ein paar Buchstaben zu lang |
| Agrarmarkt |
| Musik |
| Computer |
| Computer |
+-------------------------------------+
5 rows in set (0.00 sec)
==> funktioniert !!
mfg
comunicout
okay,
thx. hab schon gesehen wo mein fehler lag.
tschau
SELECT DISTINCT * FROM room;
kann so nicht gehen, es muss noch die Spalte auf die das DISTINCT zielt angegeben werden.
SELECT DISTINCT room.name FROM room
Dann kriegste aber nur die eine Spalte. Willst Du alle Spalten, dann versuchs mal mit:
SELECT * FROM room GROUP BY room.name
machst Du " DISTINCT * " gibts zwar keinen Fehler aber eben alle datensätze
Matthias
Hi MAtthias
SELECT * FROM room GROUP BY room.name
machst Du " DISTINCT * " gibts zwar keinen Fehler aber eben alle datensätze
Nein, blos nicht, das ist einfach nur Müll und jede vernünftige Datenbank wird dir hierfür einen Syntaxfehler ausgeben. Ausser den Spalten nach denen gruppiert wird, sind nur Aggregatsfunktionen erlaubt. Wie sollte sonst die Datenbank auch wissen, welchen der vielen möglichen Werte dieser Spalte es dir geben soll (MySQL wählt hier zufällig!).
Richtig ist, wie comunicout sagte, nur die Felder nach DISTINCT aufzuführen, die auch gebraucht werden da DISTINCT Records unterdrückt, die in _allen_ Spalten identische Werte aufweisen.
Gruss Daniela