Консультация № 193140
24.04.2018, 19:28
0.00 руб.
0 4 0
Здравствуйте! У меня возникли сложности с таким вопросом:
Делаю БД автомойки.

У меня есть две таблицы:
1. "машины" с полями (марка, номер)
2. "услуги" с полями (дата, оплата, вид услуг)

1. Мне требуется вывести на печать все машины которые мылись в определенную дату
2. Посчитать сумму на которую они помылись, за весь день
По первому пункту имеется:
AdoQuery через него делаю SQL запрос
Код:

procedure TForm1.Button9Click(Sender: TObject);
var help1, help2:string;
begin
help1:='%'+datetostr(Form1.DateTimePicker1.DateTime)+ '%';
help2:= QuotedStr(help1);
with form1.ADOQuery2 do
begin
close;
SQL.Clear;
Sql.Add('Select cars.*, uslugi.* from cars inner join uslugi on cars.код = uslugi.idcars AND uslugi.Data =' + help2 + ' order by Data');
Open;
end;
end;

выходит ошибка "не поддерживается выражение объединения"?

По второму пункту пока ничего
В какую сторону копать?

Также буду признателен на ссылки сполезными материалами!!

Обсуждение

давно
Старший Модератор
31795
6196
24.04.2018, 21:25
общий
Адресаты:
Сам сейчас "детство"(в 90-х работал в FOX PRO -ещё дискетная версия) вспоминаю, читаю Как думать на SQL? ADO, ругается на не правильный запрос. Думаю ссылка, будет полезной.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
401251
75
27.04.2018, 20:53
общий
Адресаты:
Большое спасибо, ссылка огонь.
давно
Старший Модератор
31795
6196
03.05.2018, 21:43
общий
Адресаты:
Цитата: Caesar
Большое спасибо, ссылка огонь.

И в чем была ошибка?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
401251
75
04.05.2018, 15:56
общий
04.05.2018, 15:59
Адресаты:
Если честно я просто включил "мозги" и сначала смотря на

Код:
SELECT members.firstname || ' ' || members.lastname
AS "Full Name"
FROM borrowings
INNER JOIN members
ON members.memberid=borrowings.memberid
INNER JOIN books
ON books.bookid=borrowings.bookid
WHERE borrowings.bookid IN (SELECT bookid
FROM books
WHERE stock>(SELECT avg(stock)
FROM books))
GROUP BY members.firstname, members.lastname;SELECT members.firstname || ' ' || members.lastname
AS "Full Name"
FROM borrowings
INNER JOIN members
ON members.memberid=borrowings.memberid
INNER JOIN books
ON books.bookid=borrowings.bookid
WHERE borrowings.bookid IN (SELECT bookid
FROM books
WHERE stock>(SELECT avg(stock)
FROM books))
GROUP BY members.firstname, members.lastname;


решил проблему, а потом дочитал статью!!!)
В статье правильно говориться в начале
"Если вы похожи на меня, то согласитесь: SQL — это одна из тех штук, которые на первый взгляд кажутся легкими (читается как будто по-английски!), но почему-то приходится гуглить каждый простой запрос, чтобы найти правильный синтаксис."
А ошибка была в том, что некорректно составлен запрос, как Вы и говорили
правильный вариант:
Код:
var d1,d2:String;
begin
d1:= Datetostr(Form1.DateTimePicker1.Date); ;
d2:=QuotedStr('%'+d1+ '%');
with Form1.ADOQueryRep do
begin
Close;
SQL.Clear;
Sql.Add('Select Cars.*, Uslugi.* from Cars inner join Uslugi on Cars.код=Uslugi.id_cars where Uslugi.data like' + d2+' order by Marka');
// Open;
end;
Form5.Show;
Form5.frxReport1.ShowReport();
end;

Форма ответа