2013-01-11 4 views
1

У меня есть две таблицы, как показано ниже.MySQL Query Присоединиться, чтобы выбрать непревзойденные строки из двух таблиц


user_id | username  | first_name | role_type 
----------------------------------------------------------- 
1   | testuser1  | testu1  | student 
2   | testuser2  | testu2  | student 
3   | testuser3  | testu3  | student 
4   | testuser4  | testu4  | student 
5   | testuser5  | testu5  | student 
6   | testuser6  | testu6  | admin 
7   | testuser7  | testu7  | admin 
----------------------------------------------------------- 

user_id | username   | approved_id 
---------------------------------------------------------------------- 
1   | testuser1  | 3B888F52-50BC-11E2-B08B-99E5B2CADDF7 
2   | testuser2  | 3B888F52-50BC-11E2-B08B-99E5B2CADDF7 
3   | testuser3  | 3B888F52-50BC-11E2-B08B-99E5B2CADDF7 
---------------------------------------------------------------------- 

Я попробовал запрос

SELECT users.* FROM users 
WHERE users.username NOT IN(
    SELECT users_approval.username FROM users_approval 
    WHERE users_approval.approved_id = "3B888F52-50BC-11E2-B08B-99E5B2CADDF7" 
) AND users.role_type = "student" 

и получил результат ниже


user_id | username  | first_name | role_type 
------------------------------------------------------------- 
4   | testuser4  | testu4  | student 
5   | testuser5  | testu5  | student 
------------------------------------------------------------- 

Есть ли способ использовать JOIN для получения того же набора результатов, что и выше?.

Помощь много appriciated.

ответ

7
SELECT users.* 
FROM users 
     LEFT JOIN users_approval b 
      ON users.username = b.username AND 
      b.approved_id = "3B888F52-50BC-11E2-B08B-99E5B2CADDF7" 
WHERE users.role_type = "student" AND 
     b.approved_id IS NULL 
+1

удивительным ..! Я получил некоторую ИДЕЮ о том, как теперь работают объединения: P. Спасибо LOT KJ –

+0

@LalithB вы всегда ': D' –

2
SELECT 
    users.* 
FROM users as u 
LEFT JOIN users_approval as ua ON ua.id = u.id 
WHERE u.role_type = "student" AND ua.approved_id IS NULL 

Предполагая, что вы user_id в качестве внешнего ключа во второй таблице он может быть использован для соединения вместо того, чтобы использовать имя пользователя, чтобы присоединиться таблицу

+0

Оба ваши ответы одинаковы. :) в любом случае спасибо .! –

Смежные вопросы