2016-02-01 2 views
1

Я хочу, чтобы найти пользователей, которые не делают любой заказКак я мог бы использовать присоединиться запрос, чтобы найти пересечение

Моя идея заключается в том, что, Get all user ids and substract the unique ids in orders table

Как я могу преобразовать его в синтаксис запроса MySQL.

mysql> select * from users; 
+------+ 
| id | 
+------+ 
| 1 | 
| 2 | 
| 3 | 
+------+ 
3 rows in set (0.00 sec) 

mysql> select * from orders; 
+------+---------+--------+ 
| id | user_id | amount | 
+------+---------+--------+ 
| 1 |  1 | 10.00 | 
| 1 |  2 | 5.00 | 
+------+---------+--------+ 
2 rows in set (0.00 sec) 

ответ

1

Идея заключается в том, чтобы сделать левое соединение между пользователями (левая таблица) и таблицы заказов.

Затем из этой объединенной таблицы необходимо отфильтровать записи, которые не имеют никакого порядка. Поэтому в этом случае orders.id будет NULL.

SELECT 
users.id 
FROM users 
LEFT JOIN orders 
ON users.id = orders.user_id 
WHERE orders.id IS NULL 

Визуальная Понимание:

enter image description here

SQL присоединяется объяснил лучше here.

+0

спасибо за подробное объяснение :) – user3675188

+0

Вы очень желанные дорогие! – 1000111

0
select * from users where id not in (select user_id from orders) 
+0

Просьба пояснить, как этот код решает вопрос. Это поможет OP узнать из вашего ответа, а также поможет будущим искателям. – SnareChops

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