2010-04-24 7 views
1

J'ai deux tables rooms et users. Je veux obtenir seulement rooms.room_id, users.user_name avec user_id = 1. Je peux obtenir le résultat de tous les utilisateurs avec SQL suivante ...Aide avec MySQL Query?

select rooms.room_id, 
     rooms.user_id, 
     users.user_name 
    from rooms 
LEFT JOIN users ON rooms.user_id = users.user_id 

Quand je fais comme ça pour filtrer le résultat avec user_id = 1 ... Je me suis erreur.

select rooms.room_id, 
     rooms.user_id, 
     users.user_name 
    from rooms where rooms.user_id = 1 
LEFT JOIN users ON rooms.user_id = users.user_id 

Que dois-je faire?

+0

Merci à tous! C'est un travail parfait :) – Devyn

Répondre

1

Ecrivez la requête comme:

select rooms.room_id, 
     rooms.user_id, 
     users.user_name 
    from rooms 
LEFT JOIN users ON rooms.user_id = users.user_id 
WHERE roows.user_id = 1 
3

ANSI-92 Syntaxe de JOIN (quand vous voyez LEFT JOIN ...) dicte que la clause WHERE vient après la jointure (s):

SELECT r.room_id, 
      r.user_id, 
      u.user_name 
    FROM ROOMS r 
LEFT JOIN users ON u.user_id = r.user_id 
    WHERE r.user_id = 1 

Vous étiez près.

1

Essayez:

select rooms.room_id, 
     rooms.user_id, 
     users.user_name 
from rooms 
LEFT JOIN users ON rooms.user_id = users.user_id 
WHERE rooms.user_id = 1 

La syntaxe d'une simple requête SQL SELECT est:

SELECT [a list of fields] 
FROM [a single table name maybe with an alias, or a join of tables] 
WHERE [a filter, applied over some fields of the tables in the FROM clause] 

Vous pouvez lire un tutoriel d'introduction here.

1

Il est utile d'indiquer quelle erreur vous obtenez.

Je suppose que le problème est que la clause where doit être après les jointures

select rooms.room_id, 
    rooms.user_id, 
    users.user_name 
from rooms 
    LEFT JOIN users ON rooms.user_id = users.user_id 
where rooms.user_id = 1