2 SQl Spalten aufeinander beziehen

Krypton

abgemeldet
14 Juni 2007
813
90
Hallo
Ich habe eine Tabelle in MySql
id|buch1|beginn1|buch2|beginn2|buch3|beginn3
1|a|1|b|3|c|2
2|a|3|b|1|c|2

buch1/2/3 steht für den buchstaben, und durch die spalte beginn1/2/3 würde ich die gerne sortieren.
Also:
ID 1 wäre dann acb
ID 2 wäre dann bca

Dies würde ich mit PHP auslesen und dann sortieren.
Meine frage ist wie kann man 2 spalten aufeinander beziehen.

Bzw. ich lese beginn 1 aus und daraufhin zeigt er mir das an was der erste beginn wäre bei "id1" wäre "a".
 
Dein Tabellenlayout ist schon falsch. Du hast eine Aufzählung in den Spalten (buch1, buch2, buch3 ...) was schonmal grundlegend falsch ist. Da müsstest du für weitere Bücher immer neue Spalten anlegen.

Du müsstest das in etwa wie folgt aufteilen:

id|buch|begin
1|a|1
1|b|3
1|c|2
2|a|3
2|b|1
2|c|2

und dann kannste mit folgender Query abfragen, was du haben wolltest:

PHP:
SELECT id, buch
FROM tabelle
ORDER BY id, begin
Dann würdest du die Tabelle in etwa wie oben zurückbekommen und müsstest das per PHP zusammenfassen. Du kannst es aber auch komplett über MySQL lösen, so dass du dein gewünschtes Ergebnis bereits zurückbekommst.

PHP:
SELECT id, GROUP_CONCAT(buch ORDER BY begin SEPARATOR '') AS buch
FROM tabelle
GROUP BY id