MySQL - SELECT in SELECT oder wie löst man das?
Silja
- datenbank
Hallo!
Eine kleine Frage zu mySQL (5.1.53) - vereinfachtes Beispiel:
Ich habe eine Tabelle mit Spalten "Name" und "Symbol".
Nun kann jeder Name mehrere Symbole haben.
Name Symbol
---------------
A a
A aa
B b
C c
Ich möchte, dass das Ergebnis dann so aussieht:
Name Symbol
---------------
A a, aa
B b
C c
Wenn es mehr als 3 Symbole gibt, dann sollen nur die ersten drei angezeigt werden.
Ich hätte es jetzt einfach mal so gemacht:
SELECT tabelle.Name FROM tabelle
while ($Field = mysql_fetch_assoc($Result)) {
$Name = $Field["Name"];
[...]
}
Und da drin (in der Schleife) dann nochmal ein SELECT mit WHERE-Klausel und nochmal eine Schleife. Das funktioniert so aber leider nicht (keine Rückmeldung vom lokalen Webserver mehr). Wie löst man das richtig?
Hmm, nun hätte ich es mit GROUP_CONCAT versucht, aber dann erhalte ich folgenden Fehler:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP_CONCAT([...]
Hallo Silja,
Hmm, nun hätte ich es mit GROUP_CONCAT versucht, aber dann erhalte ich folgenden Fehler:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP_CONCAT([...]
Und wie sieht der Query aus den du an die Datenbank geschickt hast?
btw: deine Einschränkung dass bei mehr als drei Symbolen nur die ersten drei angezeigt werden sollen kannst du mit GROUP_CONCAT() ohnehin nicht lösen.
Gruß,
Tobias
Hi,
btw: deine Einschränkung dass bei mehr als drei Symbolen nur die ersten drei angezeigt werden sollen kannst du mit GROUP_CONCAT() ohnehin nicht lösen.
mit SUBSTRING_INDEX auf den GROUP_CONCAT müßte sich da aber was zusammenbauen lassen.
cu,
Andreas
Hallo,
Hmm, nun hätte ich es mit GROUP_CONCAT versucht, aber dann erhalte ich folgenden Fehler:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP_CONCAT([...]
Und wie sieht der Query aus den du an die Datenbank geschickt hast?
SELECT tabelle.Name, tabelle.Symbol
GROUP_CONCAT(tabelle.Symbol)
FROM tabelle
GROUP BY tabelle.Name
Um es mal in die Bezeichnungen vom Beispiel im Ausgangsposting zu übersetzen.
btw: deine Einschränkung dass bei mehr als drei Symbolen nur die ersten drei angezeigt werden sollen kannst du mit GROUP_CONCAT() ohnehin nicht lösen.
Ich dachte, ich könnte dann vielleicht in PHP den String beim dritten Komma abschneiden, oder sowas in der Art. Aber wie gesagt, wie man sowas eigentlich lösen sollte, weiß ich eben nicht ...
Hi,
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP_CONCAT([...]
Und wie sieht der Query aus den du an die Datenbank geschickt hast?
SELECT tabelle.Name, tabelle.Symbol
GROUP_CONCAT(tabelle.Symbol) FROM tabelle GROUP BY tabelle.Name
Und dass da schlicht und einfach ein Komma fehlt, checkst du nicht selber?
MfG ChrisB
--
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
Hallo,
Und dass da schlicht und einfach ein Komma fehlt, checkst du nicht selber?
Danke für den freundlichen Hinweis.
Nein, hab' ich nicht selber "gecheckt", sonst hätte ich's wohl nicht so gepostet. mySQL und PHP sind nicht gerade mein täglich Brot und ich steh' unter enormen Zeitdruck, das sind nicht immer die besten Bedingungen um perfekt zu arbeiten.
Es klappt jetzt - Danke für eure Hilfe.