|
Найти несовподение в 2-х таблицах.
|
|||
---|---|---|---|
#18+
Добрый день! В таблице 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); ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2019, 10:28 |
|
Найти несовподение в 2-х таблицах.
|
|||
---|---|---|---|
#18+
Нет, неправильно. WHERE NOT EXISTS даст True только в случае, если таблица ROAM пустая. Либо нужно добавить корреляционное условие: Код: sql 1. 2. 3. 4. 5.
либо использовать классическое стороннее связывание: Код: sql 1. 2. 3. 4.
Если в таблице ABNT поле ID_abon уникально (имеется уникальный, возможно, первичный, индекс по этому полю) - DISTINCT избыточно и может быть удалено, иначе его следует оставить. WHERE EXISTS проверяет не отдаваемое подзапросом значение, а факт наличия записи, поэтому неважно, что SELECT-ить. Можно даже выпендриться и сделать SELECT NULL - это ни на что не повлияет. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2019, 12:23 |
|
Найти несовподение в 2-х таблицах.
|
|||
---|---|---|---|
#18+
AkinaНет, неправильно. WHERE NOT EXISTS даст True только в случае, если таблица ROAM пустая. Так тут и надо найти отсутствие в таблице ROAM ID_abon из таблицы ABNT? т.е. если совпадения есть то не выводим если нет то выводим. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2019, 12:54 |
|
|
start [/forum/topic.php?fid=47&msg=39796354&tid=1829207]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 310ms |
total: | 469ms |
0 / 0 |