Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.09;
Скачать: CL | DM;

Вниз

Поможите люди добрые SQL запрос составить!   Найти похожие ветки 

 
StasN   (2004-02-09 18:29) [0]

Имеется:
1) я, "начинающий" в программер баз данных под Дельфи.
2) Дельфя 4(какая уж есть!), старые базы данных на FOX:
1 база assortim - продукция пекарни, поля codA числовое, nameA символьное, т.е.:
1,"хлеб ржаной"
2,"булки итальянские", и т.д.
2 база product - продукты из которых печем, поля codP числовое, nameP символьное, т.е.:
1,"мука 1 сорт"
2,"дрожжи", и т.д.
3 база recept - собственно рецепты, поля codA,codP,kol числовые:
1,1,25 т.е. хлеб ржаной,муки 25 грамм
1,2,0.5 т.е. хлеб ржаной,дрожжи 0,5 грамм
2,2,0,8 т.е. булки итальянские,дрожжи 0,8 грамм
------------------------------------------------------------
поместил на форму Dbgrid с Assortim.Name выбираю чтолибо из ассортимента рядом должен появиться рецепт (в другом DBGride)
Product.name, recept.kol
Так вот, не могу никак SQL запрос составить. Не поможет никто?


 
sniknik ©   (2004-02-09 18:42) [1]

а чего не получается?

посмотри связи мастер/детайл, должно подойти. (пример в дельфях должен быть, правда вот в 4й (?))
все что надо сделать связать 2 таблицы/запроса (это из хелпа)
Orders.MasterSource := CustSource;
Orders.MasterFields := "CustNo";


 
Vlad ©   (2004-02-09 18:47) [2]

чего, вот это не можешь составить ?
select * from recept where codA=:param1
плюс в таблице ассортимента на событие AfterScroll пишешь:

QueryRecept.Close;
QueryRecept.ParambyName("param1").AsInteger:=Assortim.FieldByName("codA").AsInteger;
QueryRecept.Open;

(вариант для BDE)
Или еще проще, можешь связать два датасета Master-detail


 
StasN   (2004-02-10 20:57) [3]

Нашел 7 delphi, там есть Master-detail, два дня голову ломал где там и чё! Не разобрался.

чего, вот это не можешь составить ?
select * from recept where codA=:param1

все поля из recept мне не нужны (ну ладно не нужные спрячем), но мне нужно еще и название продукта из product, а не его номер из рецепта.
Кстати ":" в codA=:param1 это очепятка? Или так надо?

Или еще проще, можешь связать два датасета Master-detail
Поподробнее можно?
Нужно чтобы выводился, когда я выбираю, скажем, "хлеб ржаной", рецепт типа:
мука 200 гр
дрожжи 0.5 гр.
Вот что мне нужно, хотел попробовать написать это через SELECT, но вот какие проблемы возникли:
select product.name,recept.kol from product,recept,assortim
а дальше проблемы с where (возможно нужно запрос в запросе или join делать?)
where recept.codA=Assortim.codA это основное условие, т.е. записей должно быть ровно столько сколько их подходит по этому условию Product.codP=recept.codP т.е. выбрать из рецепта код продукта (и вывести именно его наименование) т.е. указатель в базе данных Product должен переместится к нужной позиции,а если я соединю эти условия через AND ничего не получится.
Вот по-моему так. Я понятно объяснил?
Что посоветуете?


 
Vlad ©   (2004-02-10 21:20) [4]

select r.*, p.NameP, a.NameA from recept r, product p, assortim a
where r.codA=a.CodA and r.CodP=p.CodP


> Кстати ":" в codA=:param1 это очепятка? Или так надо?

Так надо.


 
StasN   (2004-02-11 02:19) [5]

Спасибо, уже что-то вырисовывается, но выдается вся база рецепт, а мне надо только = текущему assortim.codA.
Т.е. отдельная табличка с ассортиментом когда выбираю что-либо - появляется в отдельной табличке сам рецепт.

А что значит это ":"?


 
StasN   (2004-02-11 02:28) [6]

Ага кажется понял ":" это подстава (макрозамена)?!

А как фильтру DBgrida дать в качестве аргумента чужое поле?
Мои попытки в гриде recept в свойстве filter значение codA=product.codA не берет, codA=product.FieldByName("codA").Value тоже.
Как это правильно написать и возможно?


 
ЮЮ ©   (2004-02-11 02:33) [7]

filter надо самому сформировать как текстовую строку:

filter := "CodA=" + product.FieldByName("codA").asString;


 
sniknik ©   (2004-02-11 08:13) [8]

D:\Program Files\Borland\Delphi7\Demos\Db\Filter\filter.dpr



Страницы: 1 вся ветка

Текущий архив: 2004.03.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
14-25900
Soft
2004-02-15 03:51
2004.03.09
Россия. Воры в Законе.


3-25683
gedd
2004-02-09 07:22
2004.03.09
ehlib


8-25826
Zeus_Chess
2003-11-05 10:50
2004.03.09
РАБОТА С *.mp3


1-25748
independant
2004-02-19 11:23
2004.03.09
Обработка событий в приложении без формы.


1-25771
Yad
2004-02-26 13:02
2004.03.09
Динамическое создание контролов