Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/24: Рейтинг темы: голосов - 24, средняя оценка - 4.96
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
1

Соединение таблиц

17.10.2006, 14:14. Показов 4903. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

У меня такой вопорс: Можно ли объединить две таблицы так, чтобы из второй таблицы выводились только те записи, которых нет в первой таблице.

... даже немного не так... что-то типа такого:

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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.10.2006, 14:14
Ответы с готовыми решениями:

Соединение таблиц
Всем привет, есть две таблицы: t1 A 11 B 12 C 13 и t2 B 21 C 22 D 23 Как осуществить...

Соединение 3 таблиц по одному полю
Есть таблица table1 (id,kod,opisanie), она главная, и есть 2 справочника table2(kod,name) и...

Формула оптимального числа таблиц в одном файле (от размеров таблиц)
Здравствуйте. Делаю небольшое приложение, но работающее с хранимымми в типизированом файле...

Соединение двух таблиц, фильтрация данных по данным из этих 2 таблиц
Помогите, пожалуйста, написать запрос SQL в Delphi 7. Есть форма, на ней кнопка и DBGrid. DBGrid...

17
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
Vodizzz (17.10.2006)
Да. Именно так мне и надо. Спасибо! ))

А какой функцией можно отформатировать тип float, чтобы показывались 2 знака после запятой?
Select Convert(decimal(18,2), FloatField)
0
0 / 0 / 1
Регистрация: 26.06.2012
Сообщений: 275
17.10.2006, 21:32  [ТС] 11
Alexey Spirin (17.10.2006)
Если надо вывести все записи из таблицы 1 (ID, Num), значение поля Num которых отсутствует во второй таблице, то, например, вот так (существуют еще несколько способов получить тот же результат):



SELECT ID, Num

FROM tbl1

WHERE Num Not In (SELECT Num FROM tbl2)


Красивый и простой запрос, но выдал пустой запрос, хотя я знаю, что в 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
Vodizzz (17.10.2006)[Красивый и простой запрос, но выдал пустой запрос, хотя я знаю, что в tbl1 есть записи, которых нет в tbl2 (
A кaкoй тип у пoля NUM? Случaйнo не float?
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
Alexey Spirin (17.10.2006)
А, кстати... Если во второй таблице в поле Num есть значение Null, то ничего не выведется.
Этo легкo испрaвляется испoльзoвaнием Not Exists:
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
Alexey Spirin (17.10.2006)
MFisher: Спасибо, я в курсе)))
Я в этoм не сoмневaлся.
Прoстo былo легче дaть quote нa вaше сooбщение чем писaть сaмoму.
0
18.10.2006, 21:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2006, 21:06
Помогаю со студенческими работами здесь

Соединение таблиц
Не понимаю, как сделать так, что бы делфи самостоятельно показывал например в каком отделе работает...

Соединение таблиц
Есть три таблицы: кассы, магазины и операции. По идее надо бы связать кассы и магазин : alter...

Соединение таблиц
Подскажите, как оптимизировать таблицу dd_R125_C526_begin1, чтобы она не запирала выборку. В этой...

Соединение таблиц
Здравствуйте! Детский вопрос, но все же: есть ли принципиальное отличие между left join и right...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru