1:n Abfrage

1:n Abfrage

am 30.01.2006 18:58:10 von Jan Rademacher

Hallo,
ich habe eine Usertabelle und mehrere Tabellen mit Eigenschaften
in der die userid und der Wert genannt wird.
Jeder User kann nun in den Untertabellen mitunter mehrere Werte
angegeben haben.
(im beispiel hat Hans in der Arbeitsweise die Werte 2, 5, und 9 angegeben.)

user
userid | name
-------+-------
1 | Hans
2 | Fritz
....

arbeitsweise
userid | arbeitsweise
-------+-------------
1 | 2
1 | 5
1 | 9
2 | 2
2 | 4

verantwortungsgrad
userid | verantwortungsgrad
-------+-------------------
1 | 3
1 | 4
1 | 7
2 | 5
2 | 6

Zielgruppen
userid | zielgruppe
-------+-------------------
1 | 2
1 | 11
1 | 9
2 | 6
2 | 16

Ich kann nun natürlich 3 Query aufbauen, wenn ich erstmal die userid
habe, aber dass muss doch irgendwie auch mit nur EINEM Query gehen ?
Wie muss ich denn nun den Query aufbauen, dass ich alle Werte sehe ?


bsp ergebnis:

Userid 1, Hans mit den Werten
arbeitsweise 2,5,9
verantwortungsgrad 2,11
zielgruppen 2,11,9

Danke für Eure Hinweise :)

Jan





--
Jan Rademacher

http://www.lockerbleiben.net

Re: 1:n Abfrage

am 31.01.2006 09:23:15 von Hartmut Holzgraefe

Jan Rademacher wrote:
> Hallo,
> ich habe eine Usertabelle und mehrere Tabellen mit Eigenschaften
> in der die userid und der Wert genannt wird.
> Jeder User kann nun in den Untertabellen mitunter mehrere Werte=20
> angegeben haben.
> (im beispiel hat Hans in der Arbeitsweise die Werte 2, 5, und 9 angegeb=
en.)
[...]
> Ich kann nun natürlich 3 Query aufbauen, wenn ich erstmal die userid =

> habe, aber dass muss doch irgendwie auch mit nur EINEM Query gehen ?
> Wie muss ich denn nun den Query aufbauen, dass ich alle Werte sehe ?

SELECT u.name,
, GROUP_CONCAT(a.arbeitsweise) AS arbeitsweisen
, GROUP_CONCAT(v.verantwortungsgrad) AS verantwortungsgrade
, GROUP_CONCAT(z.zielgruppe) AS zielgruppen
FROM user u
JOIN arbeitsweise a
ON u.userid =3D a.userid
JOIN verantwortungsgrad v
ON u.userid =3D v.userid
JOIN zielgruppe z
ON u.userid =3D z.userid

(Achtung: GROUP_CONCAT() ist eine MySQL-spezifische Funktion, siehe
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.ht ml#id273634=
4
)

--=20
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com

http://www.mysql.com/support/

Re: 1:n Abfrage

am 31.01.2006 16:04:45 von Jan Rademacher

Hartmut Holzgraefe schrieb:
>
> SELECT u.name,
> , GROUP_CONCAT(a.arbeitsweise) AS arbeitsweisen
> , GROUP_CONCAT(v.verantwortungsgrad) AS verantwortungsgrade
> , GROUP_CONCAT(z.zielgruppe) AS zielgruppen
> FROM user u
> JOIN arbeitsweise a
> ON u.userid = a.userid
> JOIN verantwortungsgrad v
> ON u.userid = v.userid
> JOIN zielgruppe z
> ON u.userid = z.userid
>

Vielen Dank!
Ich hab noch keine Möglichkeit, das Ding zu testen, da ich hier noch mit
mysql 4.0 rumgurke, aber das ist eh mal n guter Zeitpunkt zu wechseln

lg
Jan

--
Jan Rademacher

http://www.lockerbleiben.net