Форум: "Начинающим";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];
ВнизНабор полей в Query при 3-х таблицах Найти похожие ветки
← →
Alex8 (2007-11-02 10:06) [0]Здравствуйте !
Если в свойстве SQL компонента Query1 я ссылаюсь на
3 таблицы (A, B, C), т.е "Select * From A, B, C " , то при
обращении к редактору полей после нажатия кнопки "Add" (любой)
происходит выход из DELPHI без всякого уведомления и без сохранения
изменений.
В случае 2-х таблиц набор полей формируется нормапьно.
Может быть я что-то не так делаю или существуют ограничения
на число используемых таблиц ?. Спасибо.
← →
clickmaker © (2007-11-02 10:10) [1]а зачем нужны все поля из трех таблиц, причем даже не связанных никаким условием? или здесь не полный текст запроса?
← →
ЮЮ © (2007-11-02 10:13) [2]Декартово произведение записей Зх "полновесных" таблиц не выдержит ни одно приложение.
См.
http://delphimaster.net/view/15-1193910910/
← →
Anatoly Podgoretsky © (2007-11-02 10:16) [3]> ЮЮ (02.11.2007 10:13:02) [2]
Это декартовое в квадрате.
А за звездочку увольнять без выходного пособия.
← →
Alex8 (2007-11-02 10:36) [4]> а зачем нужны все поля из трех таблиц.....
Мне не нужны все поля. Но как отобрать нужные,
если в SQL изначально не указана нужная таблица ?
Select * From A, B, C вносится первоначально для
формирования нужного набора полей, которые берутся
из 3-х таблиц. Это позволит в дальнейшем обойтись
одним запросом.
А потом я проверил - решающим фактором является
число таблиц, а не число полей.
← →
ЮЮ © (2007-11-02 10:43) [5]
Первоначально, надо связать таблицы, чтобы каждой записи в одной таблице соответствовало нужное количество записей из другой.
А в случае SELECT FROM А, В
для
А (Id) и B(Id)
1 1
2 2
3 3
В результате получаем 9 записей
1 1
1 2
1 3
...
3 2
3 3
Это и есть "произведение" таблиц.
> решающим фактором является
> число таблиц
А кто бы сомневался :)
← →
Anatoly Podgoretsky © (2007-11-02 10:47) [6]
> > решающим фактором является
> > число таблиц
>
> А кто бы сомневался :)
Вообще то решающий фактор Голова, а число таблиц - количественный
← →
Alex8 (2007-11-02 10:57) [7]> Вообще то решающий фактор Голова ....
Спасибо. Все понял. Поля сформированы.
Немного дольше, чем через звездочку,
но это не так важно.
← →
ЮЮ © (2007-11-02 11:07) [8]>
> Спасибо. Все понял. Поля сформированы.
> Немного дольше, чем через звездочку,
> но это не так важно.
Главное - не поля, а связи между таблицами.
Показывай, что получилось!
← →
Alex8 (2007-11-02 12:08) [9]> Главное - не поля, а связи между таблицами.
> Показывай, что получилось!
Просто неприятие звездочки привело к тому, что
Вместо "Select * From A, B, C"
записать в исходном SQL
"Select A.p1, B.p2, C.p3 From A, B, C"
и после нажатия "Add all Fields" набор
полей сформировался.
Т.е. дело все-таки в суммарном числе полей.
А связи между таблицами будут указаны
при програмном формировании текста
рабочего Select.
Тут проблем нет. Части записей талицы А
соответствует группа записей таблицы В
(связь по ключу). Аналогично. Некоторым записям талицы В
соответствует группа записей таблицы С.
Еще раз спасибо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.045 c