yo,
das erste, was mir aufgefallen ist, das möglicherweise deine tabellenlogik ein wenig unglücklich ist. nicht das es ihr schlecht geht, aber du hasst den sinn ein wenig verdreht. so wie du es darstellst, soll es eine 1:n beziehung zwischen den beiden geben, also eine Frage kann mehrere optionen haben. so weit so gut. aber dann fängst du an zu "mogeln", indem du für drei unterschiedliche optionen jeweils zwei spalten in der zweiten tabelle erstellt hast. die 1:n beziehung kann das aber schon von hause aus viel eleganter wiedergeben. dann kann die anzahl der optionnen varieren und ist nicht auf drei begrentzt. wenn ich das richtig verstanden habe, sollte das für die zweite tabelle ausreichen. (meine andere vermutung geht in richtung einer m:n beziehung, aber dazu braucht man mehr infos zu deinen vorgaben)
umfrage_optionen
----------------------------------
Feld Typ Inhalt
id bigint(14) z.B. 4
umfrage_id bigint(14) z.B. 2
option varchar(255) z.B. Yoga
ergebnis int(11) z.B. 22
Diese Query läuft nicht:
SELECT u.frage, uo.erg_1 AS uo.opt_1, uo.erg_2 AS uo.opt_2, uo.erg_3 AS uo.opt_3 FROM umfrage AS u, umfrage_optionen AS uo WHERE u.id = 2
yo, als alias-name (AS) einen spaltenwert zu nehmen, das geht meiner meinung nach nicht. ein spaltenname kommt ja nur einmal vor, es kann aber durchaus mehrere datensätze in deiner abfrage geben und somit hättest du mehr als einen spaltennamen. deine aliase sind auch etwas anderes, nämlich Option 1, Option 2 und Option 3 und Yoga, Chi Gong und Bodyworkout sind die inhalte der datensätze.
bei der abfrage gibt es noch ein anderes problem. du "joinst" über zwei tabellen. deshalb solltest du in deiner where Bedingungen das auch berücksichtiugen. aonsonsten wird jeder datensatz der ersten tabelle mit jeden datensatz der zweiten verbunden und es kommen mehr datensätze raus, als dir lieb ist, also:
WHERE u.id = 2 AND u.id = uo.umfrage_id
Geht das so überhaupt, hab ich was falsch geschrieben? In der MySQL-Doku hab ich leider auch nix gefunden. Über einen Link der mit weiterhilft würde ich mich auch schon freuen :-)
in den dokus steht in aller regel auch nicht, was alles nicht geht, sondern was geht. das würde den rahmen einer jeden doku sprengen. also besser schauen, wie es geht und dann verstehen, warum mein weg nicht geht. ;-)
Also ich möchte mit AS nicht einen "statischen" Feldnamen vergeben, sondern es sollen die Namen der opt_*-Felder als Feldnamen für die entsprechenden erg_*-Felder benutzt werden.
das bekommst du auch hin, aber wie oben beschrieben, bringst du spaltennamen mit inhalt durcheinander. deine ergebnis-tabelle auf id=2 könnte in etwas so aussehen.
Frage Option Ergebniss
2. Yoga 15
2. Gong 20
2. Body 14
in welcher form du diese tabelle nun ausgibst, ist dir überlassen und hat nur bedingt mit den alias-namen zu tun. so könnte man alle option der 2. frage auch nebeneinander schreiben und die spaltenüberschrifetn weglassen. das würde in etwa deinen gesuchten entsprechen.
Ilja