![]() |
![]() |
|
Как 2 таблицы запроса объединить так, чтобы из одной исключить записи друго | ☑ | ||
---|---|---|---|---|
0
gr13
21.06.07
✎
15:02
|
собственно, есть 2 таблицы запроса, как правильно объединить их так (в запросе), чтобы из таблицы 1 исключить все записи присутствующие в таблице 2?
|
|||
1
Terv
21.06.07
✎
15:02
|
Левым соединением и условие в ГДЕ , НЕ ЕСТЬ NULL
|
|||
2
Лефмихалыч
21.06.07
✎
15:03
|
(0) подумай еще раз, что ты делать собрался - запросом можно только ВЫБРАТЬ данные, но не исключить
|
|||
3
pajaro
21.06.07
✎
15:04
|
ВЫБРАТЬ
... ИЗ Таблица1 ЛЕВОЕ СОЕДИНЕНИЕ Таблица2 ПО Таблица1.Ключ = Таблица2.Ключ ГДЕ Таблица2.Ключ ЕСТЬ NULL |
|||
4
Лефмихалыч
21.06.07
✎
15:04
|
+(2) что на выходе-то надо, я вот чего понять не могу
|
|||
5
Лефмихалыч
21.06.07
✎
15:07
|
я б сказал, что это полное внешнее соединение:
этот запрос вернет все несовпадающие записи из двух таблиц |
|||
6
gr13
21.06.07
✎
15:19
|
есть таблица 1 с записями 1,2,3,4,5,6
есть таблица 2 с записями 3,4,5 результирующая таблица 1,2,6 |
|||
7
gr13
21.06.07
✎
15:19
|
(5) меня не интересуют вообще не совпадающие записи второй таблицы
|
|||
8
Terv
21.06.07
✎
15:20
|
(6) см. (1)
|
|||
9
gr13
21.06.07
✎
15:25
|
(8) не понял(
|
|||
10
Terv
21.06.07
✎
15:27
|
(9)
|
|||
11
Лефмихалыч
21.06.07
✎
15:28
|
(7) это значит, что СОЕДИНЕНИЕ использовать нельзя. Например, используй вложенный запрос и оператор "В"
|
|||
12
Terv
21.06.07
✎
15:28
|
+(10) хм... ошибся... в (3) правильно
|
|||
13
selenat
21.06.07
✎
15:29
|
(10) НЕ - лишнее...
|
|||
14
selenat
21.06.07
✎
15:30
|
Левыч, ИМХО ты все время не в теме...
|
|||
15
gr13
21.06.07
✎
15:33
|
пасибо) сделал другим запросом передал в СЗ
|
|||
16
Лефмихалыч
21.06.07
✎
15:34
|
(14) неверное твое мнение
|
|||
17
Terv
21.06.07
✎
15:35
|
(16) верное, верное
|
|||
18
Лефмихалыч
21.06.07
✎
15:39
|
(14,17) шли бы вы оба свое мнение в утесах ныкать. Соединение нужно для выбора комбинаций записей из ВСЕХ источников. Таким образом, если нам надо выбрать данные только из одного источника, то это не соединение. Единственное в чем я ошибся - в (11) "нельзя" надо замнить на "не стоит"
|
|||
19
gr13
21.06.07
✎
15:41
|
(10) а разве тогда не попадут все записи из первого запроса?
|
|||
20
selenat
21.06.07
✎
15:42
|
(19) проверь. :)
|
|||
21
Terv
21.06.07
✎
15:43
|
(19) только надо писать
ГДЕ Таблица2.Ключ ЕСТЬ NULL см.(12) (13) (3) |
|||
22
Михей
21.06.07
✎
15:45
|
ВЫБРАТЬ
Таблица1.Ключ ИЗ Таблица1 ГДЕ Таблица1.Ключ НЕ В ( ВЫБРАТЬ Таблица2.Ключ ИЗ Таблица2) |
|||
23
gr13
21.06.07
✎
16:07
|
(10) без НЕ работает, хотя я и не огрокал пока логику до конца(
|
|||
24
PR
21.06.07
✎
16:08
|
(2) Правда что ли? :))
|
|||
25
selenat
21.06.07
✎
16:11
|
(23) да все вроде прозрачно. Если во второй табл. нет соответствующих записей, то имеем в этом поле NULL и отсеиваем эти записи с NULL при помощи ГДЕ. Ты лучше сравни этот вариант по скорости с (22)...
|
|||
26
Freest
21.06.07
✎
16:25
|
(3) почти в 2 раза быстрее (22)
|
|||
27
selenat
21.06.07
✎
16:30
|
(26) не удивительно. Насчет в 2 раза - думаю, это зависит от объема выборки...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |