Mal wieder so 'ne blöde Newbie Frage....
Ich habe eine Tabelle mit Usern und eine Tabelle mit Artikeln.
Dazu eine Tabelle wo ich user_id's und artikel_id's einander zuordne (2 spalten)
Jetzt will ich alle artikelstammsätze für einen bestimmten user bekommen.
Also quasi
SELECT article_id from user_article where user_id='1234567'
und mit dem ergebnis folgende query anstossen:
SELECT * from articles where article_id='$alle_article_ids_von_oben'
Ich denke das ist ein Standardfall, den man bestimmt mit einer Abfrage mittels JOIN lösen kann, aber ich blick's einfach nicht, und weiß auch nicht so recht, wie man nach sowas suchen soll.....
Danke für Eure Hilfe
Dennis
SELECT *
FROM articles a
LEFT JOIN users u on id
WHERE u.id = xxx
Wow, das ging ja flott ;-))
Vielen Dank, ich probier's gleich mal aus - und dann werd' ich mal versuchen das mit dem JOIN endlich mal zu blicken.....
THX
Dennis
TobiaZ,
wenn Du noch Zeit und Lust hast:
>>SELECT *
>>FROM articles a
>>LEFT JOIN users u on id
>>WHERE u.id = xxx
Die Tabelle die ich abfrage heißt "users_articles",
das abzufragende Feld heißt "artikelid".
In den Artikelstammdaten heißt das korrespondierende Feld NUR "id". Ist das ein Problem? Sollte ich das in "artikelid" umbenennen?
Folglich sollte das m.E. heißen
SELECT *
FROM articles a
LEFT JOIN users_articles u on id (oder articleid??)
WHERE u.userid = xxx
Wofür ist das Konstrukt "articles a" gut? Ein Alias? Aber wofür? Kann ich da auch die Tabellennamen direkt nehmen?
Fragen über Fragen....
Vielen Dank
Dennis
Okay, dein Post zeigt mir, dass du dich schon damit beschäfftigt hast, es nur leider noch nicht ganz blickst. aber unter den Umständen hilft man ja gerne.
Sorry, die Syntax oben waren ohnehin falsch. Statt on müsste ja USING(id) dahin. war eben nur schnell getippt.
SELECT * // das all solltest du noch spezialisieren
FROM artikel AS a // ja, das ist ein alias
LEFT JOIN user AS u // aliasse nicht zu verwenden bedeutet mehr schreibarbeit ON a.id = u.artid
WHERE u.id = xxx
@Tobiaz:
lass mal die "AS" weg, das ist nicht ANSI konform, und außerdem unnötig !
Der MS-SQL Server haut dir bei "AS" zB auf die Finger :D
Oh, wollte verdeutlichen, dass es Aliasse sind. An MS hatte ich net gedacht.
Ich hab's dann gestern abend doch noch geblickt :-))))))
Für alle anderen Anfänger da draussen:
Das Konstrukt:
SELECT *
FROM table1,table2
WHERE table1.articleid=table2.id
AND table1.userid=xxx
macht genau das was ich will - verbindet die Datensätze der zwei Tabellen über id und articleid und selektiert über die userid der tabelle1.
Danke Euch allen für Eure Hilfe!
Dennis
select * benutzt man trotzdem nicht! Hier wird jede einzelne spalte extra angesprochen!
DAS weiß ich ;-)
Die brauche ich aber in dem Fall auch alle...
Trotzdem nochmal Danke!
Dennis
Die brauche ich aber in dem Fall auch alle... EGAL! Macht man trotzdem NICHT!