![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выборка из 2ух таблиц [D7, XP]
ViktorZ © (2006-02-04 09:13:00)Нужно установить соответсвие этих 2ух полей и выбрать во втором то где Шифр =15
Вот что я пишу:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:='Select * From Acheck Where LogicDate = :P1';
Query1.Params[0].AsDate := strtoDate(Trim( Edit1.text));
Query1.Open;
потом вяжу 2 датасоурсе на первый квери и пишу уже во втором квери
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Text:='Select * From ADCheck Where Sys_Num=:Sys_Num And Sifr=15 ';
Query2.Open;
Desdechado (2006-02-05 15:36:00) [1]ViktorZ © (04.02.06 22:56) [17]
см. [14].3
YurikGL (2006-02-05 12:13:00) [2]Мартин Грубер. Понимание SQL
http://podgoretsky.com/ddp.html
ViktorZ (2006-02-04 22:56:00) [3]блин я думал услышать этот ответ намного раньше:-))) мож ссылку даш или автора посоветуешь.
Desdechado (2006-02-04 22:49:00) [4]> а как тогда работать дальше
книжку взять по SQL
ViktorZ (2006-02-04 21:58:00) [5]а как тогда работать дальше. Ну скажем мне теперь плученные результат нужно сравнить еще с одним полем другой таблицы.
Desdechado (2006-02-04 19:00:00) [6]1. можно соединять сразу несколько таблиц, причем по-разному (внешнее, внутреннее, полное соединение)
2. можнои без псевдонимов, только в случае соединения таблиц это не очень удобно, ибо надо тогда писатьполные имена таблиц, а это удлинняет запрос и делает его менее читабельным
3. книжку можешь взять любую по SQL, азы есть во всех, но лучше взять ту, в которой расписаны тонкости твоей СУБД (а они есть всегда, эти отклонения от стандарта)
ViktorZ (2006-02-04 18:38:00) [7]А можно подключить сюда третью таблицу? это я к тому что как быть мне с результатом запроса, если это еще не конец и мне его нужно сравнить с др таблицей. То есть лично сам думаю (пока не знаю как) слить все в промежуточную таблицу, а потом оттуда снова запросом. ИЛИ можно как то сразу здесь?
ViktorZ (2006-02-04 16:58:00) [8]Блин нифина как круто, я тут запросов размусолил. Спасибо за попробую. Посоветуйте Скуль книгу, где можно узнать побольше про запросы.И это а зачем вообще псевдонимы придумали, что без них разве нельзя?
Desdechado (2006-02-04 16:50:00) [9]SELECT A.*, AD.*
FROM Acheck A, Adcheck AD
WHERE A.LogicDate BETWEEN :P1 AND :P2
AND A.Sys_Num = AD.Sys_Num
AND AD.Sifr = 15
ViktorZ (2006-02-04 15:41:00) [10]Ну да только не дата а диапазон дат. Из него получаем диапазон Сиснум. По диапазону Sys_Num, который мы выяснили разбираем записи, в которых в поле Sifr стоит значение 15.
YurikGL (2006-02-04 14:58:00) [11]т.е. из таблицы Acheck выбираем Sys_num которому соответсвует некая дата. Потом смотрим в таблице ADCheck какие Sifr соответсвуют выбранному Sys_num
Все правильно?
ViktorZ (2006-02-04 13:38:00) [12]а я что выше то делал, я уже и пример привел и расписал все как мог, Как можно ее еще объяснять? Что непонятно?
Какие такие две таблицы?--<<
Все очень просто: 1) Acheck 2) ADCheck? ВЫ не знали что такое таблицы? Или они что то другое значат.
Anatoly Podgoretsky (2006-02-04 12:45:00) [13]Какие такие две таблицы?
Ты разумно задачу в состоянии объяснить?
ViktorZ (2006-02-04 12:28:00) [14]а. Да это что. Вот структура таблицы Acheck:
поля: sys_num - integer, Logicdate-date,
Выбираем из нее дату из тестового поля(это я сделал)
Получаем в LogicDate - Дата из тестового поля. В Sys_num диапазон чисел.
Таблица2) ADCheck: Sys_num, Sifr -integer.
По диапазону Sys_num полученным из первой таблицы нужно получить диапазон Sifr где шифр = 15 например.
Пример:
1)
LogicDate Sys_Num
24.01.2006 123
24.01.2006 124
24.01.2006 125
24.01.2006 126
24.01.2006 127
24.01.2006 128
2)
Sifr Sys_num
2 123
3 125
2 126
15 127
15 128
В таблице 2 дожно быть два поля Sys_Num и Sifr (127,128 :: 15 15) сооттвественно.
Могу даже таблички кинуть, если не понятно написал.
YurikGL (2006-02-04 11:48:00) [15]
> Таблицы дать не могу,
Структуру таблиц дать можешь? И структуру того, что хочешь получить...
Структура, в данном случае, - набор полей.
ViktorZ (2006-02-04 10:20:00) [16]Мне не нужно получать новую таблицу Нужно правильно сделать выборку(чего я пока не могу). Таблицы дать не могу, я на модеме а они большие(30 мег). Неужели я непонятно написал в [2] что мне нужно?
YurikGL (2006-02-04 10:12:00) [17]
> ViktorZ © (04.02.06 10:10) [2]
Лучше сделать так:
Даешь исходную структуру таблиц, какуй таблицу нужно получить в итоге, и пример.
ViktorZ (2006-02-04 10:10:00) [18]потом вяжу 2 датасоурсе на первый квери и пишу уже во втором квери <<
Ой вяжу Второй Квери на первый ДатаСоурсе. Короче мне нужно по диапазону Сис Нум в первой таблице увидет диапазон Сиснума2=Сиснум1 где Шифр равен 15.
YurikGL (2006-02-04 09:50:00) [19]Ничего не понял....
> потом вяжу 2 датасоурсе на первый квери и пишу уже во втором
> квери
Эта строчка особенно непонятна..