
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
31.03.2015, 10:02:42
|
|||
|---|---|---|---|
|
|||
UNION + JOIN как то можно объединить ? |
|||
|
#18+
Есть простой запрос отбирающий все уникальные e-mail из двух таблиц: SELECT DISTINCT va_orders.email FROM va_orders UNION DISTINCT SELECT DISTINCT va_orders.delivery_email FROM va_orders А теперь нужно из результата выкинуть все e-mail, которые уже есть в третьей таблице Чего то никак не вкурю как это сделать :( Или это в одной команде никак ? А как тогда объединить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2015, 10:06:44
|
|||
|---|---|---|---|
|
|||
UNION + JOIN как то можно объединить ? |
|||
|
#18+
anstrem, во-первых, DISTINCT не нужен, ибо UNION без ALL уже делает финальный DISTINCT по результату объединения. Во-вторых, срези SET-операторов есть не только UNION [ALL], но и INTERSECT и MINUS (EXCEPT). А если MINUS-а и нету, то можно через LEFT JOIN его эмулировать. Единственное, что запрос с UNION нужно оформить в виде деривед-тэйбл (вложенный подзапрос / inlinr view / select-from-select, х.з. как оно тебе понятнее будет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2015, 10:07:39
|
|||
|---|---|---|---|
|
|||
UNION + JOIN как то можно объединить ? |
|||
|
#18+
anstrem из двух таблиц: ОписАлся, тут из разных полей одной таблицы, но вообщем сути вопроса не меняет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2015, 10:08:12
|
|||
|---|---|---|---|
|
|||
UNION + JOIN как то можно объединить ? |
|||
|
#18+
Добрый Э - Эхanstrem, во-первых, DISTINCT не нужен, ибо UNION без ALL уже делает финальный DISTINCT по результату объединения. Во-вторых, сре д и SET-операторов есть не только UNION [ALL], но и INTERSECT и MINUS (EXCEPT). А если MINUS-а и нету, то можно через LEFT JOIN его эмулировать. Единственное, что запрос с UNION нужно оформить в виде деривед-тэйбл (вложенный подзапрос / inlin e view / select-from-select, х.з. как оно тебе понятнее будет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2015, 10:12:16
|
|||
|---|---|---|---|
|
|||
UNION + JOIN как то можно объединить ? |
|||
|
#18+
Добрый Э - Эхanstrem, среди SET-операторов есть не только UNION [ALL], но и INTERSECT и MINUS (EXCEPT) А это точно про MySQL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2015, 10:13:05
|
|||
|---|---|---|---|
|
|||
UNION + JOIN как то можно объединить ? |
|||
|
#18+
anstrem, по теме минуса читать тут: тынц1 , тынц2 . на худой конец можно заюзать {NOT IN | NOT EXISTS} подзапрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2015, 10:14:14
|
|||
|---|---|---|---|
UNION + JOIN как то можно объединить ? |
|||
|
#18+
Если используете UNION, то DISTINCT уже не нужен. UNION его и так сделает. anstremА теперь нужно из результата выкинуть все e-mail, которые уже есть в третьей таблицеДва варианта - Либо соединять результат двух проверок таблиц, либо проверять результат соединения. Как будет быстрее - сходу не скажу, зависит от данных. Вероятно, первый вариант будет быстрее. Код: sql 1. 2. 3. Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2015, 10:14:17
|
|||
|---|---|---|---|
|
|||
UNION + JOIN как то можно объединить ? |
|||
|
#18+
Добрый Э - Эх Единственное, что запрос с UNION нужно оформить в виде деривед-тэйбл (вложенный подзапрос / inlinr view / select-from-select, х.з. как оно тебе понятнее будет) Вот это видимо мне и не понятно :) Как сделать с двумя таблицами через JOIN вроде знаю, а как тоже самое сделать с результатом UNION и таблицей ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.03.2015, 10:17:05
|
|||
|---|---|---|---|
|
|||
UNION + JOIN как то можно объединить ? |
|||
|
#18+
miksoft Код: sql 1. 2. 3. Спасибо, понял, сразу что то не догадался. Скорость вообще тут не волнует, это разовые ручные запросы на выборку и таблицы не гигантские. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1833361]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 304ms |

| 0 / 0 |
