2012-04-21 2 views
1

У нас есть две таблицы:Выбор пользователей из одной таблицы, только если не в другом

- Пользователи -

id name borrower 
-- ------ -------- 
1 Peter 1 
2 John 1 
3 Mark 1 
4 David 0 

- lendings -

id from to amount 
-- ---- -- ------ 
1 1  2 100 

Мне нужно вывести что Питер не предоставил никаких денег и заемщиков = 1 (исключая Питер из результатов), например:

id name borrower 
-- ------ -------- 
3 Mark 1 

Сейчас я застрял с этим запросом (не работает):

SELECT * 
FROM `users` u 
LEFT OUTER JOIN `lendings` l 
ON u.`id` = l.`from` 
WHERE l.`from` is null 
AND u.`id` != 1 
AND u.`borrower` = 1 

Это упрощенный пример реального кода, чтобы держать вопрос полезным/читаемым для будущих читателей.

Связанные вопрос: MySQL: select emails from one table only if not in another table?

ответ

2

Что-то вроде этого?

SELECT 
    * 
FROM 
    users 
WHERE 
    id NOT IN (SELECT 
      id 
     FROM 
      lendings) 
     AND borrower = 1; 

Возможно, вы захотите использовать разные имена столбцов, как я считаю, и зарезервированные слова в mysql.

+0

Ошибка «Операнд должен содержать 1 столбец», я отредактировал ваш запрос, и теперь он отлично работает. Отличный материал Lazerblade, спасибо! –