2011-09-03 2 views
1

Tableau un:requête SQL en utilisant deux tables

|user_id|hotel_id| 
| 1 | 4  | 
| 1 | 5  | 
| 2 | 6  | 
| 4 | 7  | 

table à deux:

|hotel_id|hotel_name|more_ifo| 
| 4 | bla  |bla  | 
| 5 | bla  |bla  | 
| 6 |more bla |bla  | 
| 7 | bla  |bla  | 

Je veux obtenir toutes les informations des hôtels qu'un certain utilisateur a par exemple l'utilisateur un des hôtels 4 et 5 .. de l'aide? J'ai essayé d'utiliser join mais je suppose que je ne l'utilise pas correctement ..?

+5

Montrez-nous le code que vous avez essayé. –

+2

Possible duplicate: http://stackoverflow.com/questions/334852/sql-join-query-writing –

Répondre

3
SELECT users.*, hotels.* 
FROM users 
INNER JOIN hotels 
ON users.hotel_id = hotels.hotel_id 

Notez que l'utilisation * dans une clause SELECT est considérée comme une mauvaise pratique; Je ne le fais ici que dans le cadre d'un exemple d'utilisation de jointures.

Si vous souhaitez rechercher les hôtels associés à un utilisateur spécifique, ajoutez simplement une clause WHERE à cet effet:

SELECT users.*, hotels.* 
FROM users 
INNER JOIN hotels 
ON users.hotel_id = hotels.hotel_id 
WHERE users.user_id = ? 
+0

cela ne me donnerait pas seulement tous les hôtels? Je suis à la recherche des hôtels de l'utilisateur il ne devrait pas y avoir un "où" quelque part? – user605505

+0

Veuillez actualiser. J'ai mis à jour ma réponse pour inclure une telle requête avant de la commenter. – cdhowie

+0

merci beaucoup pour votre argent! – user605505

1

Vous pouvez interroger tous les hôtels pour un utilisateur avec une clause exists:

select * 
from hotels 
where exists 
     (
     select * 
     from users 
     where users.hotel_id = hotels.hotel_id 
       and users.user_id = @YourUserId 
     ) 
1
Select B.more_ifo 
From table_one A, table_two B 
Where A.hotel_id = B.hotel_id 

Ce travail ne fonctionne pas?

Après cela;

Select B.more_ifo 
From table_one A, table_two B 
Where A.hotel_id = B.hotel_id 
AND A.hotel_id IN (4, 5) 
2

t1 est alias pour table one et t2 est alias table two

select t1.user_id,t2.hotel_id,t2.hotel_name,t2.more_info 
from table_one t1 INNER JOIN table_two t2 
ON t1.hotel_id=t2.hotel_id 
where t1.user_id=1;