Форум: "Базы";
Текущий архив: 2004.03.09;
Скачать: [xml.tar.bz2];
ВнизПоможите люди добрые 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c