#sql #sql-server #database #postgresql #duplicates
#sql #sql-сервер #База данных #postgresql #дубликаты
Вопрос:
представьте, что у меня есть две таблицы. первая — Film, а вторая — Store
в таблице store есть столбец store_id, а значение внутри store_id равно 1 и 2. в таблице Film есть title_name фильмов.
мой вопрос заключается в том, чтобы объединить две таблицы и отобразить название фильма только в хранилище 1 .. если фильм, который в хранилище 1, также находится в хранилище 2, тогда он не должен отображаться в хранилище 1
пример
если фильм (туман) находится в хранилище 1, а не в хранилище 2, тогда отобразите его, но фильм (туман находится в хранилище 1 и в хранилище 2, тогда не отображайте его
здесь актуальный вопрос с уточнением и, если возможно, с запросом в postgresql
Перечислите 100 лучших фильмов, взятых напрокат (по количеству раз, когда они были взяты напрокат) из store1, которые не входят в 100 лучших фильмов, взятых напрокат в store2. Ваш запрос должен сгенерировать заголовок одного столбца, содержащий список фильмов, которые соответствуют заданным условиям.
УТОЧНЕНИЕ:
Выберите 100 лучших фильмов из хранилища 1 и УДАЛИТЕ фильмы, которые также находятся в хранилище 2, в результате чего результат будет меньше 100. Вы должны дополнительно упорядочить оба списка в алфавитном порядке, чтобы гарантировать, что вы всегда получаете один и тот же результат. Порядок конечного результата не имеет значения.
Комментарии:
1. Подсказки — EXCEPT или NOT СУЩЕСТВУЕТ или ОТСУТСТВУЕТ. И сделайте свою домашнюю работу. Вы не научитесь, если попросите других дать вам ответы.
Ответ №1:
SELECT TOP 100 st1.title_name
FROM (store1 st1 ORDER BY st1.nr_times_rented DESC)
EXCEPT
SELECT TOP 100 st2.title_name
FROM (store2 st2
ORDER BY nr_times_rented DESC)
или
SELECT TOP 100 st1.title_name
FROM store1 st1
WHERE s1.title_name NOT IN (SELECT TOP 100 st2.title_name
FROM store2 st2
ORDER BY nr_times_rented DESC)
ORDER BY st1.nr_times_rented DESC
Читайте здесь, КРОМЕ