Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Исправление запроса в oracle sql / 2 сообщений из 2, страница 1 из 1
30.05.2018, 20:28
    #39652814
Исправление запроса в oracle sql
арегистрировать нового клиента, который оформил заказ 10.05.2018 года.
Необходимо выполнить химчистку салона и полировку фар. Определить
предварительную стоимость этого заказа. Какие таблицы будут задействованы в
этой транзакции? - я это всё сделал

но у меня этот заказ выводится так, что он состоит из двух услуг и для каждой отдельно пишется предварительная стоимость


INSERT INTO KLIENT VALUES ((SELECT MAX(ID_K)+1 FROM KLIENT), 'Бережной Дмитрий Анатольевич', 89316893325);
SELECT*FROM KLIENT;
INSERT INTO ZAKAZ VALUES ((SELECT MAX(ID_Z)+1 FROM ZAKAZ), 3, '10.05.18', '23.05.18' ,
(SELECT MAX(ID_K) FROM KLIENT), 3, (SELECT (price/100)*30 FROM USLUGI WHERE ID_U=3 ));
INSERT INTO ZAKAZ_USLUGI VALUES ((SELECT MAX(ID_Z) FROM ZAKAZ), 3);

INSERT INTO ZAKAZ VALUES ((SELECT MAX(ID_Z) FROM ZAKAZ), 6, '10.05.18', '15.05.18',
(SELECT MAX(ID_K) FROM KLIENT), 3, (SELECT (price/100)*30 FROM USLUGI WHERE ID_U=6 ));
INSERT INTO ZAKAZ_USLUGI VALUES ((SELECT MAX(ID_Z) FROM ZAKAZ), 6);
SELECT*FROM ZAKAZ;
SELECT*FROM ZAKAZ_USLUGI;

--предварительная стоимость по каждой услуге отдельно
SELECT DISTINCT KLIENT.FIO, USLUGI.names, ZAKAZ.DATE_1, ZAKAZ.predvar_stoim
FROM KLIENT, USLUGI, ZAKAZ
WHERE KLIENT.ID_K= (SELECT MAX(ID_K) FROM KLIENT)
AND ZAKAZ.ID_Z= (SELECT MAX(ID_Z) FROM ZAKAZ WHERE USLUGI.ID_U=3 )
AND ZAKAZ.predvar_stoim IN (SELECT predvar_stoim FROM ZAKAZ WHERE ID_U=3)
UNION
SELECT DISTINCT KLIENT.FIO, USLUGI.names, ZAKAZ.DATE_1, ZAKAZ.predvar_stoim
FROM KLIENT, USLUGI, ZAKAZ
WHERE KLIENT.ID_K= (SELECT MAX(ID_K) FROM KLIENT)
AND ZAKAZ.ID_Z= (SELECT MAX(ID_Z) FROM ZAKAZ WHERE USLUGI.ID_U=6 )
AND ZAKAZ.predvar_stoim IN (SELECT predvar_stoim FROM ZAKAZ WHERE ID_U=6);



мне нужно, чтобы предварительная стоимость выводилась из двух этих предварительных стоимостей
...
Рейтинг: 0 / 0
30.05.2018, 22:15
    #39652867
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Исправление запроса в oracle sql
Алексей Ромченкарегистрировать нового клиента, который оформил заказ 10.05.2018 года.
Необходимо выполнить химчистку салона и полировку фар. Определить
предварительную стоимость этого заказа. Какие таблицы будут задействованы в
этой транзакции? - я это всё сделал

но у меня этот заказ выводится так, что он состоит из двух услуг и для каждой отдельно пишется предварительная стоимость


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
INSERT INTO KLIENT VALUES ((SELECT MAX(ID_K)+1 FROM KLIENT), 'Бережной Дмитрий Анатольевич', 89316893325); 
SELECT*FROM KLIENT; 
INSERT INTO ZAKAZ VALUES ((SELECT MAX(ID_Z)+1 FROM ZAKAZ), 3, '10.05.18', '23.05.18' , 
(SELECT MAX(ID_K) FROM KLIENT), 3, (SELECT (price/100)*30 FROM USLUGI WHERE ID_U=3 )); 
INSERT INTO ZAKAZ_USLUGI VALUES ((SELECT MAX(ID_Z) FROM ZAKAZ), 3); 

INSERT INTO ZAKAZ VALUES ((SELECT MAX(ID_Z) FROM ZAKAZ), 6, '10.05.18', '15.05.18', 
(SELECT MAX(ID_K) FROM KLIENT), 3, (SELECT (price/100)*30 FROM USLUGI WHERE ID_U=6 )); 
INSERT INTO ZAKAZ_USLUGI VALUES ((SELECT MAX(ID_Z) FROM ZAKAZ), 6); 
SELECT*FROM ZAKAZ; 
SELECT*FROM ZAKAZ_USLUGI; 

--предварительная стоимость по каждой услуге отдельно 
SELECT DISTINCT KLIENT.FIO, USLUGI.names, ZAKAZ.DATE_1, ZAKAZ.predvar_stoim 
FROM KLIENT, USLUGI, ZAKAZ 
WHERE KLIENT.ID_K= (SELECT MAX(ID_K) FROM KLIENT) 
AND ZAKAZ.ID_Z= (SELECT MAX(ID_Z) FROM ZAKAZ WHERE USLUGI.ID_U=3 ) 
AND ZAKAZ.predvar_stoim IN (SELECT predvar_stoim FROM ZAKAZ WHERE ID_U=3) 
UNION 
SELECT DISTINCT KLIENT.FIO, USLUGI.names, ZAKAZ.DATE_1, ZAKAZ.predvar_stoim 
FROM KLIENT, USLUGI, ZAKAZ 
WHERE KLIENT.ID_K= (SELECT MAX(ID_K) FROM KLIENT) 
AND ZAKAZ.ID_Z= (SELECT MAX(ID_Z) FROM ZAKAZ WHERE USLUGI.ID_U=6 ) 
AND ZAKAZ.predvar_stoim IN (SELECT predvar_stoim FROM ZAKAZ WHERE ID_U=6);




мне нужно, чтобы предварительная стоимость выводилась из двух этих предварительных стоимостей



Алексей,
1) перечитай что ты написал, все понятно?
Народ ленив, а это не работа, и если с первого раза не поймет, не каждый будет разбираться дальше.
Постарайся четко и последовательно написать что на входе, что на выходе, а не поток сознания

2) не надо лепить screenshot, достаточно скопировать текст, это гораздо удобнее если понадобится цитировать при ответе

3) Текст нужно оформить ТЭГами, они для этого придуманы (кнопочки SRC, FIX, QUOTE... в заголовке окна)
Сравни что было, и что стало

4) Если хочешь быстрый ответ, подготовь тестовые данные, чтобы отвечающий мог проверить и привести ответ на твоих данных.
удобно будет если тестовые данные будут в формате WITH, в этом случае не требуется создавать лишние объекты
достаточно доступа к базе.

например (в твоем случае):
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
WITH 
USLUGI(id,names,preprice) AS (
SELECT 1,'Мойка педальки',145 from dual union all
SELECT 2,'Мойка рычажка',245 from dual union all
SELECT 3,'Выпрямление компрессии',124130 from dual
)
, KLIENT(ID_K,FIO, PHOME) AS ( 
select 22,'Бережной Дмитрий Анатольевич', 89316893325 from dual union all
select 12,'Бережной Анатолий Анатольевич', 89316893323 from dual
)
, ZAKAZ (column1, column2...) AS ( 
...
)



5) Не совсем по теме, но конструкция
Код: plsql
1.
INSERT INTO KLIENT VALUES ((SELECT MAX(ID_K)+1 FROM KLIENT),...



Будет очень интересно работать если ее вызовут одновременно несколько операторов.
Для решения этой проблемы, есть объект БД sequence
Код: plsql
1.
2.
create sequence s_klient_id;
INSERT INTO KLIENT VALUES (s_klient_id.nextval,...



6) Ну и на сладкое:
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] Как правильно задавать вопросы
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Исправление запроса в oracle sql / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]