0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
|
|
1 | |
Соединение таблиц17.10.2006, 14:14. Показов 4903. Ответов 17
Метки нет (Все метки)
Здравствуйте!
У меня такой вопорс: Можно ли объединить две таблицы так, чтобы из второй таблицы выводились только те записи, которых нет в первой таблице. ... даже немного не так... что-то типа такого: tbl1 id | Num 1 | 56 2 | 76 3 | 89 4 | 76 5 | 76 6 | 89 tbl2 id | Num 1 | 56 2 | 76 3 | 76 4 | 76 Соединив эти таблицы должно получиться такое: id | Num 1 | 89 2 | 89 Возможно такое сделать одним запросом? Или придется писать процедуру побольше? (Процедуру побольше я написал, но я это сделал через создание временной таблицы, а соединяемые таблицы очень большие, поэтому очень долго обрабатываются)
0
|
17.10.2006, 14:14 | |
Ответы с готовыми решениями:
17
Соединение таблиц Соединение 3 таблиц по одному полю Формула оптимального числа таблиц в одном файле (от размеров таблиц) Соединение двух таблиц, фильтрация данных по данным из этих 2 таблиц |
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
|
|
17.10.2006, 14:17 | 2 |
Я не понял, откуда берется ID в результирующей таблице?
И по какому критерию вообще идет отбор?
0
|
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
|
|
17.10.2006, 14:29 [ТС] | 3 |
id - в каждой таблице свой, уникальный ключ
А сравнивать их надо по Num Еслибы надо было их просто объединить, то это выглядело бы так: SELECT tbl1.id, tbl1.Num FROM tbl1 LEFT JOIN tbl2 ON tbl1.Num=tbl2.Num
0
|
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
|
|
17.10.2006, 14:35 | 4 |
алгоритм все равно не уловил.
Если надо сравнить по num и id, так что мешает написать ....join.... On t1.id=t2.id and t1.num<>t2.num ? Или как вам там надо?
0
|
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
|
|
17.10.2006, 14:48 [ТС] | 5 |
Почти так, только без id
id просто для учета и он не будет совпадать в таблицах. Т.е. если я правильно понял, то можно объединить так: SELECT tbl1.id, tbl1.Num FROM tbl1 LEFT JOIN tbl2 ON tbl1.Num<>tbl2.Num но при этом выведутся и записи из tbl2, которых нет в tbl1?
0
|
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
|
|
17.10.2006, 14:55 | 6 |
Если надо вывести все записи из таблицы 1 (ID, Num), значение поля Num которых отсутствует во второй таблице, то, например, вот так (существуют еще несколько способов получить тот же результат):
SELECT ID, Num FROM tbl1 WHERE Num Not In (SELECT Num FROM tbl2)
0
|
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
|
|
17.10.2006, 14:59 [ТС] | 7 |
Да. Именно так мне и надо. Спасибо! ))
А какой функцией можно отформатировать тип float, чтобы показывались 2 знака после запятой?
0
|
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
|
|
17.10.2006, 15:11 | 8 |
Выставляйте формат чисел на клиенте.
0
|
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
|
|
17.10.2006, 15:13 [ТС] | 9 |
Хорошо. Спасибо.
0
|
1 / 1 / 0
Регистрация: 26.07.2006
Сообщений: 43
|
|
17.10.2006, 20:20 | 10 |
0
|
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
|
|
17.10.2006, 21:32 [ТС] | 11 |
Красивый и простой запрос, но выдал пустой запрос, хотя я знаю, что в tbl1 есть записи, которых нет в tbl2 (
0
|
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
|
|
17.10.2006, 21:52 | 12 |
Если бы они были, то он бы их вывел.
Првоеряйте внимательно. Может условие нужно не только по Num, но и еще по какому-то полю?
0
|
1 / 1 / 0
Регистрация: 26.07.2006
Сообщений: 43
|
|
17.10.2006, 22:47 | 13 |
0
|
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
|
|
17.10.2006, 22:51 | 14 |
А, кстати... Если во второй таблице в поле Num есть значение Null, то ничего не выведется.
0
|
1 / 1 / 0
Регистрация: 26.07.2006
Сообщений: 43
|
|
17.10.2006, 23:04 | 15 |
SELECT [ID], Num FROM tbl1 WHERE Not Exists (SELECT Num FROM tbl2 where Num = tbl1.Num)
0
|
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
|
|
18.10.2006, 01:35 | 16 |
MFisher: Спасибо, я в курсе)))
0
|
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
|
|
18.10.2006, 16:32 [ТС] | 17 |
Тип Num - int
В tbl2 есть много NULL. А запрос SELECT [ID], Num FROM tbl1 WHERE Not Exists (SELECT Num FROM tbl2 where Num = tbl1.Num) вроде сработал (как-то очень много несовпадений получилось, буду проверять )) Спасибо
0
|
1 / 1 / 0
Регистрация: 26.07.2006
Сообщений: 43
|
|
18.10.2006, 21:06 | 18 |
Прoстo былo легче дaть quote нa вaше сooбщение чем писaть сaмoму.
0
|
18.10.2006, 21:06 | |
18.10.2006, 21:06 | |
Помогаю со студенческими работами здесь
18
Соединение таблиц Соединение таблиц Соединение таблиц Соединение таблиц Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |