|
|
|
Как выбрать только тогда, когда хоть один из результатов подзапроса не вернул значение
|
|||
|---|---|---|---|
|
#18+
Есть такие таблицы: компании companies | ID | NAME | |----|--------------------| | 1 | Первая компания | | 2 | Вторая компания | | 3 | Третья компания | | 4 | Четвертая компания | мэйлы emails | ID | NAME | |----|---------------------| | 1 | first@fdsfjsfj.dfs | | 2 | second@fdsfjsfj.dfs | | 3 | third@fdsfjsfj.dfs | | 4 | forth@fdsfjsfj.dfs | связывающая таблица companies_emails | COMPANY_ID | EMAIL_ID | |------------|----------| | 1 | 1 | | 1 | 2 | | 2 | 3 | | 2 | 4 | айдишники мыл, которые отправили попадают в таблицу touches | ID | EMAIL_ID | |----|----------| | 1 | 1 | Задача: вывести только те компании, в которых ни один мэйл не был отправлен (не попал в таблицу touches). Я пытался сделать это так: Код: sql 1. 2. потом так: Код: sql 1. 2. 3. 4. 5. и даже так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Но всё это не работает. Выводятся компании, где есть хотя бы один мэйл, попавший в таблицу (touches). Мне же надо, чтоб выводились только компании, где нет ни одного отправленного мыла. То есть конкретно в нашем случае должна остаться "Вторая компания", т.к. только в ней есть мэйлы и все нетронуты. Вот здесь нагляднее http://sqlfiddle.com/#!2/bf544/8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2014, 06:15:33 |
|
||
|
Как выбрать только тогда, когда хоть один из результатов подзапроса не вернул значение
|
|||
|---|---|---|---|
|
#18+
pavelforever, что нибудь типа: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2014, 06:26:04 |
|
||
|
Как выбрать только тогда, когда хоть один из результатов подзапроса не вернул значение
|
|||
|---|---|---|---|
|
#18+
javajdbc, спасибо! похоже работает:)) если без ошибок, то код так будет выглядеть: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2014, 07:19:40 |
|
||
|
Как выбрать только тогда, когда хоть один из результатов подзапроса не вернул значение
|
|||
|---|---|---|---|
|
#18+
pavelforever, угу, связку я зре пропустил конечно. Кстати, можно упростить having count(t.id) = 0 Если t.id is null то КАУНТ его не посчитает. (если я не ошибаюсь) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2014, 07:57:59 |
|
||
|
Как выбрать только тогда, когда хоть один из результатов подзапроса не вернул значение
|
|||
|---|---|---|---|
|
#18+
pavelforeverЕсть такие таблицы: компании companies | ID | NAME | |----|--------------------| | 1 | Первая компания | | 2 | Вторая компания | | 3 | Третья компания | | 4 | Четвертая компания | мэйлы emails | ID | NAME | |----|---------------------| | 1 | first@fdsfjsfj.dfs | | 2 | second@fdsfjsfj.dfs | | 3 | third@fdsfjsfj.dfs | | 4 | forth@fdsfjsfj.dfs | связывающая таблица companies_emails | COMPANY_ID | EMAIL_ID | |------------|----------| | 1 | 1 | | 1 | 2 | | 2 | 3 | | 2 | 4 | айдишники мыл, которые отправили попадают в таблицу touches | ID | EMAIL_ID | |----|----------| | 1 | 1 | Задача: вывести только те компании, в которых ни один мэйл не был отправлен (не попал в таблицу touches). Я пытался сделать это так: Код: sql 1. 2. потом так: Код: sql 1. 2. 3. 4. 5. и даже так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Но всё это не работает. Выводятся компании, где есть хотя бы один мэйл, попавший в таблицу (touches). Мне же надо, чтоб выводились только компании, где нет ни одного отправленного мыла. То есть конкретно в нашем случае должна остаться "Вторая компания", т.к. только в ней есть мэйлы и все нетронуты. Вот здесь нагляднее http://sqlfiddle.com/#!2/bf544/8 а вообще задача элементарная...только на подобные задачи надо смотреть под другим углом. у нас есть таблицы... надо компании где ни один мейл не трогался. а что если сначала получить компании, где хотябы один мейл трогался:) имея все компании и компании где хоть один трогался - получить компании где ни один не трогался - сразу елементарно:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2014, 00:11:23 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38787149&tid=1834032]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
67ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 345ms |

| 0 / 0 |
