MySQL Abfrage vereinfachen (verschachtelung), wer kann helfe
Verfasst: 22.10.2007 12:24
Hallo, ich habe eine MySQL abfrage das über 2 Tabelen läuft. Das Problem will ich nach dem Beispiel erstmal erleutern. Bzw. ob man irgend wie besser machen kann.
Tabelle: Tab_User
Felder: user_id, user_name, user_email, user_icq
Tabelle2: Tab_koppeln
Felder: user_id1, user_id2
SQL Abfrage:
SELECT user_id1, user_id2,
(SELECT user_icq FROM Tab_User WHERE user_id = user_id1) AS icq1,
(SELECT user_icq FROM Tab_User WHERE user_id = user_id2) AS icq2,
(SELECT user_name FROM Tab_User WHERE user_id = user_id1) AS name1,
(SELECT user_name FROM Tab_User WHERE user_id = user_id2) AS name1
FROM Tab_koppeln;
PROBLEM:
Die obige abfrage solte so gut wie funktionieren, aber wen ich vom user 1 und vom user 2 noch mehr Felder benötige, muß ich extrem viel diese verschachtelte (SELECT ...) anweisungen reinbringen.
IChbin natürlich nicht schreibfaul und kann dies ja auch machen, aber ich denke für MySQL ist es eher viel mehr arbeit, weil muß bei jeder (SELECT...) immer wieder den user finden um eine zeile auszulesen.
Geht es nicht irgend wie einfacher, das man irgend wie sagt, hol aus user 1 die und die Felder und vom User 2 holl die und die Felder. Also damit mysql nicht ständig den user auffinden muß um wieder ein doofes Feld auszulesen.
Tabelle: Tab_User
Felder: user_id, user_name, user_email, user_icq
Tabelle2: Tab_koppeln
Felder: user_id1, user_id2
SQL Abfrage:
SELECT user_id1, user_id2,
(SELECT user_icq FROM Tab_User WHERE user_id = user_id1) AS icq1,
(SELECT user_icq FROM Tab_User WHERE user_id = user_id2) AS icq2,
(SELECT user_name FROM Tab_User WHERE user_id = user_id1) AS name1,
(SELECT user_name FROM Tab_User WHERE user_id = user_id2) AS name1
FROM Tab_koppeln;
PROBLEM:
Die obige abfrage solte so gut wie funktionieren, aber wen ich vom user 1 und vom user 2 noch mehr Felder benötige, muß ich extrem viel diese verschachtelte (SELECT ...) anweisungen reinbringen.
IChbin natürlich nicht schreibfaul und kann dies ja auch machen, aber ich denke für MySQL ist es eher viel mehr arbeit, weil muß bei jeder (SELECT...) immer wieder den user finden um eine zeile auszulesen.
Geht es nicht irgend wie einfacher, das man irgend wie sagt, hol aus user 1 die und die Felder und vom User 2 holl die und die Felder. Also damit mysql nicht ständig den user auffinden muß um wieder ein doofes Feld auszulesen.