powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Найти несовподение в 2-х таблицах.
4 сообщений из 4, страница 1 из 1
Найти несовподение в 2-х таблицах.
    #39796220
eagl69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
В таблице ABNT хранятся уникальные ID всех абонентов. В таблице ROAM хранятся уникальные ID абонентов делавших заказ за месяц надо найти абонентов которые не делали заказ.
Правильно ли я написал:
1. SELECT DISTINCT ABNT.ID_abon
2. FROM ABNT AS ROAM
3. WHERE NOT EXISTS (SELECT ROAM. ID_abon, FROM ROAM);
...
Рейтинг: 0 / 0
Найти несовподение в 2-х таблицах.
    #39796354
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, неправильно. WHERE NOT EXISTS даст True только в случае, если таблица ROAM пустая.

Либо нужно добавить корреляционное условие:
Код: sql
1.
2.
3.
4.
5.
SELECT DISTINCT ABNT.ID_abon
FROM ABNT
WHERE NOT EXISTS (SELECT 1 
                FROM ROAM
                WHERE ROAM.ID_abon = ABNT.ID_abon);


либо использовать классическое стороннее связывание:
Код: sql
1.
2.
3.
4.
SELECT DISTINCT ABNT.ID_abon
FROM ABNT
LEFT JOIN ROAM ON ROAM.ID_abon = ABNT.ID_abon
WHERE ROAM.ID_abon IS NULL;



Если в таблице ABNT поле ID_abon уникально (имеется уникальный, возможно, первичный, индекс по этому полю) - DISTINCT избыточно и может быть удалено, иначе его следует оставить.

WHERE EXISTS проверяет не отдаваемое подзапросом значение, а факт наличия записи, поэтому неважно, что SELECT-ить. Можно даже выпендриться и сделать SELECT NULL - это ни на что не повлияет.
...
Рейтинг: 0 / 0
Найти несовподение в 2-х таблицах.
    #39796393
eagl69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaНет, неправильно. WHERE NOT EXISTS даст True только в случае, если таблица ROAM пустая.


Так тут и надо найти отсутствие в таблице ROAM ID_abon из таблицы ABNT? т.е. если совпадения есть то не выводим если нет то выводим.
...
Рейтинг: 0 / 0
Найти несовподение в 2-х таблицах.
    #39796399
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мужик, ты понимаешь разницу между "в таблице вообще нет записей" и "в таблице есть записи, но нет записей, имеющихся в другой таблице"?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Найти несовподение в 2-х таблицах.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]