Kevin Wiedener: Zwei MySQL-Selects zusammenfügen

Beitrag lesen

Hi Leute,

ich habe das Problem, dass ich zwei eigentlich verschiedene MySQL-Selects zu einem zusammenfügen möchte. Ich habe in der MySQL-Doku gefunden, dass das mit UNION möglich sei, doch da habe ich Probleme. Meine Datenbankabfrage sieht folgendermaßen aus:

$groups_query = "SELECT v.group_id, v.group_name AS name FROM groups v, user_groups u WHERE (u.user_id = '" . $add_array['ID'] . "' AND v.group_id = u.group_id) UNION JOIN SELECT w.ranks_id, w.ranks_name AS name FROM ranks w, user_ranks t WHERE (t.user_id = '" . $add_array['ID'] . "' AND w.ranks_id = t.rank_id) ORDER BY name";

Die Abfrage ist zwar syntaktisch korrekt, jedoch kommt es zu folgendem Problem:

Sagen wir z.B. wir suchen nach der ID = 1. Meine Tabellen sehen folgendermaßen aus:
___________________________________
| groups                          |
-----------------------------------

  • group_id = 1, group_name = Test -
    -----------------------------------

_____________________________
| user_groups               |
-----------------------------

  • user_id = 2, group_id = 1 -
    -----------------------------

__________________________________
| ranks                          |
----------------------------------

  • ranks_id = 1, rank_name = Hi   -
    ----------------------------------

_____________________________
| user_ranks                |
-----------------------------

  • user_id = 2, rank_id = 1  -
    -----------------------------

Nun bekomme ich also folgende Ausgabe:

-----------------------------

  • group_id = 1, name = Hi   -
  • group_id = 1, name = Test -
    -----------------------------

Dabei sollte folgende Ausgabe eigentlich rauskommen:

-----------------------------

  • ranks_id = 1, name = Hi   -
  • group_id = 1, name = Test -
    -----------------------------

Das UNION überschreibt praktisch meine ranks_id und speichert sie in group_id rein, doch das möchte ich nicht.

Gibt es da keine simple Lösung? Das kann ich mir ja fast nicht vorstellen (ich habs auch schon mit sämtlichen JOINs versucht, aber es ging nicht).

Vielen Dank für Eure Hilfe

Grüßle

Kevin