Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.47 MB
Время: 0.009 c
14-25903
Alex Konshin
2004-02-16 09:19
2004.03.09
Атака клонов


1-25819
Макс Реалов
2004-02-25 15:22
2004.03.09
Конструкторы и статические методы.


1-25733
Rayslava
2004-02-26 17:48
2004.03.09
RichEdit из Dll


1-25741
Goida
2004-02-26 17:10
2004.03.09
Точное время!


4-25968
Igit
2004-01-03 22:08
2004.03.09
Debug API в XP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский