2013-09-04 4 views
0

J'ai deux tables et je veux dans une requête prendre quelques valeurs.Comment faire une bonne requête sql?

Tables:

users 
|user_id | 
|name  | 

user_group_link 
|user_id | 
|group_id | 

Voici ma requête:

SELECT users.*, user_group_link.* 
FROM users 
LEFT JOIN user_group_link ON users.user_id = user_group_link.user_id 
WHERE user_group_link.group_id = 10 
AND user_group_link.group_id = 11 
AND user_group_link.group_id = 12 

Le problème est que ET ne fonctionne pas. Je ne comprends pas pourquoi cela ne fonctionne pas parce que j'utilisé et avant et il semblait travailler

+2

Le group_id ne peut pas être 10,11 et 12 à la fois pour un enregistrement; donc vous n'obtiendrez aucun résultat. Essayez d'utiliser OU – Seybsen

+0

il n'y avait pas d'erreurs. il suffit de retourner les champs vides – myrko

+0

merci U. La prochaine fois que je vais organiser mes tables comme ça – myrko

Répondre

7

Le problème avec cette requête: il n'y a pas une seule ligne qui a 10, 11 ET 12 comme group_id ... vous avez besoin OU ici!

SELECT users.*, user_group_link.* 
FROM users 
LEFT JOIN user_group_link ON users.user_id = user_group_link.user_id 
WHERE user_group_link.group_id = 10 
OR user_group_link.group_id = 11 
OR user_group_link.group_id = 12 

Alternative:

SELECT users.*, user_group_link.* 
FROM users 
LEFT JOIN user_group_link ON users.user_id = user_group_link.user_id 
WHERE user_group_link.group_id IN (10,11,12) 
+0

je vous remercie pour une aide – myrko

3

user_group_link.group_id ne peut pas être 10, 11 ou 12en même temps, vous avez besoin OR au lieu de AND.

Ainsi, votre requête devrait être:

SELECT users.*, user_group_link.* 
FROM users 
LEFT JOIN user_group_link ON users.user_id = user_group_link.user_id 
WHERE user_group_link.group_id = 10 
OR user_group_link.group_id = 11 
OR user_group_link.group_id = 12 
+3

Ah, battu moi :) –

+2

je vous remercie pour une aide – myrko

2

Essayez d'utiliser IN

SELECT users.*, user_group_link.* 
    FROM users 
    LEFT JOIN user_group_link ON users.user_id = user_group_link.user_id 
    WHERE user_group_link.group_id IN ('10','11','12') 
+1

@myrko Mark the répondre qui fonctionne le mieux pour vous en tant que réponse – myrko

Questions connexes