Ответ 1
Один из способов:
SELECT RESTAURANT_NO FROM restaurant WHERE RESTAURANT_NO NOT IN
(SELECT RESTAURANT_NO FROM restaurant WHERE RESTAURANT_LOCATION = 'City C')
Скажем, у меня есть таблица:
Restaurant locations:
RESTAURANT_NO | RESTAURANT_LOCATION
-----------------------------------
1 | City A
1 | City B
2 | City A
2 | City B
2 | City C
3 | City C
4 | City A
4 | City B
Как я смогу сгруппировать их вместе, а также RESTAURANT_NO, которые не имеют местоположений в городе C?
Используя этот пример, я хочу вернуться:
RESTAURANT_NO
-------------
1
4
Так как RESTAURANT_NO 2 и 3 имеют места в городе C.
Я не знаю, как сгруппировать RESTAURANT_NO вместе, одновременно пытаясь выбрать группы, отвечающие этому требованию.
EDIT: Я получил эту работу.
Однако, есть еще одна вещь, которую я до сих пор не смог понять. В следующей таблице указаны идентификаторы пользователей и города, в которых они работали:
PERSON_NO | CITY_NAME
---------------------
1 | City A
2 | City B
3 | City A
3 | City B
3 | City C
4 | City A
4 | City B
4 | City C
Как я могу получить PERSON_NO всех людей? которые жили во всех трех городах, A, B и C?
Я хочу вернуться
PERSON_NO
---------
3
4
Спасибо, опять. У меня не было такого большого опыта работы с SQL, и поэтому я не уверен, что делать.
Один из способов:
SELECT RESTAURANT_NO FROM restaurant WHERE RESTAURANT_NO NOT IN
(SELECT RESTAURANT_NO FROM restaurant WHERE RESTAURANT_LOCATION = 'City C')
SELECT DISTINCT
Restaurant_no
FROM
TableX t
WHERE
NOT EXISTS
( SELECT *
FROM TableX c
WHERE c.Restaurant_no = t.Restaurant_no
AND c.Restaurant_location = 'City C'
)
Используйте DISTINCT
.
попробуйте следующее:
SELECT DISTINCT t.Restaurant_No
FROM Restaurant t
WHERE t.Restaurant_No NOT IN
(SELECT s.Restaurant_No
FROM Restaurant s
WHERE s.RESTAURANT_LOCATION = 'City C')
ORDER BY t.Restaurant_No