61200
Goto Top

MYSQL Abfrage für Verknüpfungstabelle

Hallo ;), ich finde eure Page oft via Google und hab schon so einige Infos daraus gewonnen, nun bin ich aber auf ein Problem gestoßen.

Ich habe mehrere Tabellen in meiner DB "userdb" eine user, eine sprachen, und eine zu_sprachen Table.


In der user gibt es u.a. eine user_id (PK AI)
In der Sprachen Tabelle gibt es Sprach_id(PK AI) und sprache
In der zu_sprachen Tabelle werden user_id und Sprach_id verknüpft.


Ich hätte nun gerne eine Ausgabe von User_id und dessen gewählten sprachen


nochmal kurz

user(user_id, uva)
sprachen(sprach_id, sprache)
zu_sprachen(sprach_id, user_id)

Ich hab mit inner join und mehreren Selects probiert komme aber einfach nicht zum Ziel, auch habe ich versucht nach mehreren Ansätzen eurere Page zu handeln leider ohne Erfolg.
Ich danke ;).

Content-Key: 80310

Url: https://administrator.de/contentid/80310

Printed on: April 20, 2024 at 01:04 o'clock

Member: utopia
utopia Feb 09, 2008 at 07:44:30 (UTC)
Goto Top
SELECT user_id, sz.sprache
FROM zu_sprache AS sz
INNER JOIN sprachen AS s
ON sz.sprach_id = s.sprach_id;

bzw

SELECT user_id, sz.sprache
FROM user AS u
INNER JOIN (zu_sprache AS sz
INNER JOIN sprachen AS s
ON sz.sprach_id = s.sprach_id)
ON u.user_id = sz.user_id;

Bei der Klammersetzung unbedingt mal googlen, die vergess ich immer ;)
Mitglied: 61200
61200 Feb 09, 2008 at 07:52:48 (UTC)
Goto Top
danke schonmal für die frühe hilfe ;)

er meckert wegen dem sz.....

irgendwas passt noch nicht

user
user_id

sprachen
sprach_id sprache

zu_sprachen
sprach_id user_id

so sehen meine tables aus
wofür ist "sz"?
Member: misterdemeanor
misterdemeanor Feb 09, 2008 at 12:09:55 (UTC)
Goto Top
Mahlzeit,

er meckert wegen dem sz.....

irgendwas passt noch nicht

wofür ist "sz"?

sz soll hier ein Tabellenverweis/Alias darstellen (-->AS)

Allerdings meine ich das es nicht zulässig ist dieses in einem JOIN zu verwenden.

bin mit dem MySQL-Dialekt auch nicht ganz vertraut...aber ungefähr so sollte es aussehen:

SELECT user.user_id, sprachen.sprache
FROM [user] 
INNER JOIN (sprachen INNER JOIN zu_sprachen ON sprachen.sprach_id = zu_sprachen.sprach_id) ON user.user_id = zu_sprachen.user_id
WHERE (((user.user_id)=1));

WHERE-Klausel ist jetzt nur beispielhaft mit drin.

BG; Felix -misterdemeanor<
Mitglied: 61200
61200 Feb 09, 2008 at 17:02:35 (UTC)
Goto Top
Danke ihr seit mal echt eine große Hilfe ;).

So hat es letztlich geklappt

"SELECT user.user_id, sprachen.sprache
FROM user
INNER JOIN (sprachen INNER JOIN zu_sprachen ON sprachen.sprach_id = zu_sprachen.sprach_id) ON user.user_id = zu_sprachen.user_id where user.user_id="X";"

Wofür bei dir die vielen Klammern sind hab ich nicht ganz verstanden, jedenfalls klappte es nachdem ich diese entfernt habe.

ausgabe ist dann

user_id deutsch
user_id spanisch
user_id englisch

*freut*