MYSQL - tabellen-uebergreifendes WHERE ?

fi**en32

Lieutenant
Registriert
Mai 2007
Beiträge
967
hi leutz,

folgendes szenario:

tabelle user:
ID
rechte
name

tabelle texte:
ID
user_ID
inhalt

diese beiden tabellen sollen mit texte:user_ID zu user:ID verknuepft werden und wie folgt abgefragt werden:

SELECT * FROM texte WHERE user:rechte=5;

hab da schon mal bissel was mit dem AS gelesen, das sollte der richtige weg sein, nur bekomm ichs nich wirklich hin
 
select <tabname>.<feldname> , <weiterer_tabname>.<weiterer.feldname> ...
from user, texte
where user.id = texte.user_id
and <tabname>.<feldname> <operator> <wert>
and ...
or ...
bla ...

Oder für dich:

select texte.id, texte.user_id, texte.inhalt
from user, texte
where user.id = texte.user_id
and user.rechte = 5
 
Zuletzt bearbeitet:
Hallo,

Ich glaube, Du möchtest gerne nur die User haben, welche auch Text in Texte haben. Dann machst Du das über einen INNER JOIN.

SELECT u.id, t.id AS tid, rechte, name, inhalt
FROM user u INNER JOIN TEXTE t ON t.user_ID = u.id
WHERE rechte = 5;

Fragen? Fragen!

Schüss
Hurga
 
Hallo fi**en32,
so wie ich das sehe benötigst du nicht zwingend einen join der tabellen, da laut deiner beschreibung nur die informationen aus text für dich relevant sind(?). Ich würde das ganze mit einem sub-select versuchen:

Code:
SELECT * FROM texte WHERE user_ID in (select ID from user where rechte=5);

die WHERE bedingung im sub select kannst du dann auch noch um den user namen erweitern falls notwendig:

Code:
SELECT * FROM texte WHERE user_ID in ( select ID from user where rechte = 5 and name = 'fi**en32' );

und für diejenigen die sich jetzt einen bösen kommentar nicht verkneifen können und alles lieber gleich mit einem "Equal" Join lösen wollen:

Code:
SELECT * FROM texte JOIN user ON texte.user_ID = user.ID WHERE user.rechte = 5;

Bei dem Join werden dann aber alle Spalten aus beiden Tabellen angezeigt - sofern nicht anders definiert. Die andere Sache ist, das du mehr Treffer (Zeilen) zurück bekommst als unter Umständen gewünscht. Das ist abhängig von deinen Daten in den Tabellen.

Hoffe das hilft dir etwas weiter.

grüße rossibär
 
Zuletzt bearbeitet:
Code:
SELECT
   USER.*,
   TEXT.ID AS text_ID,
   TEXT.user_ID,
   TEXT.inhalt
FROM
   `user` AS USER,
   `texte` AS TEXT
WHERE
   USER.ID = TEXT.user_ID AND
   USER.rechte = 5

Voilà!
Das meintest du wohl mit "AS" (als) was hier auch nur ein JOIN ist.

Edit: Und hat's geklappt?!
 
Zuletzt bearbeitet:
Zurück
Oben