Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2009, 18:09   #1
Mat
Новичок
Джуниор
 
Регистрация: 26.03.2009
Сообщений: 2
По умолчанию Естественное соединение

Делаю лабораторную работу по БД.Нужно сделать естественное соединение двух таблиц, использую ODBC,ADO, таблицы Paradox.
В лекции написано что естественное соединение это natural join
Делаю запрос
select * from A natural join select * from B
не работает, выдает ошибку, а
select * from A natural union select * from B работает.
Операции пересечение intersect и вычитания except тоже не работают.
Как выполнить эти операции?
Mat вне форума Ответить с цитированием
Старый 27.03.2009, 00:12   #2
Антон Ю.Б.
Форумчанин
 
Регистрация: 03.01.2009
Сообщений: 116
По умолчанию

а) насколько совпадают структуры таблиц?
б) неплохо приводить сами ошибки
в) paradox - это из далекой истории, куда нет желания возвращаться, но разве join любого типа не требует директивы ON с параметрами?
г) Вы понимаете, что JOIN (любой) и UNION - это оч разные вещи?
Антон Ю.Б. вне форума Ответить с цитированием
Старый 27.03.2009, 11:17   #3
Neobrat
Форумчанин
 
Регистрация: 10.12.2007
Сообщений: 124
По умолчанию

признаюсь с парадоксом не сталкивался..

но синтакчис sql примерно должен быть одинаковый..

запрос вида
select * from A natural join select * from B
не правильный так как join соеденяет две "таблицы" и должен знать как соединять
должно быть что то вроде

select * from tableA a
natural join tableB b ON a.id=b.id

а запрос вида правильный
select * from A natural union select * from B работает.
union обьеденяет два результата "запроса"
единственное условие для его выполнения это сопадение количества и тип полей возвращаемых запросом

p.s. повтарюсь с Paradoxом не работал но думаю он тоже должен подерживать стандарт SQL92
Русский язык не мой конёк
Neobrat вне форума Ответить с цитированием
Старый 27.03.2009, 17:17   #4
Mat
Новичок
Джуниор
 
Регистрация: 26.03.2009
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Neobrat Посмотреть сообщение
признаюсь с парадоксом не сталкивался..
select * from tableA a
natural join tableB b ON a.id=b.id
Так тоже ошибку выдает.
А соединение такого вида работает.
Код:
select * from tableA a
inner join tableB b ON a.id=b.id
Сделал через inner join.
full join тоже не работает(right/left работает). Интересно как его сделать?
Mat вне форума Ответить с цитированием
Старый 28.03.2009, 12:27   #5
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

имхо самое естественное соединение - это декартово умножение

Код:
select *
from A, B
soleil@mmc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Естественное слияние в массивах Virus-Haker Помощь студентам 2 07.02.2008 13:40
соединение ben95 Общие вопросы Delphi 5 03.02.2008 04:20
Модемное соединение dekcc Работа с сетью в Delphi 12 09.11.2007 00:50
SSL соединение s-force Работа с сетью в Delphi 1 28.08.2007 15:26
Соединение с БД Angel_666 БД в Delphi 9 04.05.2007 16:10