Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2017, 18:06   #1
Anriuser
Пользователь
 
Регистрация: 13.07.2014
Сообщений: 46
По умолчанию Помогите сформировать правильно запрос

Клиентов CLIENT (IMYA. PRIZV, CLI_ID. CARD_NO)
Товаров TOVAR (TOV_ID. VART_OD, AVAIL)
Покупок SALES (SALE_ID, TOV_ID, KILK, SUMA, DATE)
Счет BANK (CARD_NO. BALANCE)
Напишите запрос. который будет определять имя и фамилия покупателей, которые приобрели определенный товар прошлом месяце на общую сумму превышающую 2000 грн. Таблица клиентов является фрагментирована на 2 фрагменты с CLI_ID <= 1000 и CLI_ID> 1000
Постройте несколько альтернативных графов выполнения этого запроса и сравните эффективность выполнения.
Anriuser вне форума Ответить с цитированием
Старый 01.06.2017, 19:06   #2
Anriuser
Пользователь
 
Регистрация: 13.07.2014
Сообщений: 46
По умолчанию

SELECT CLIENT.IMYA, CLIENT.PRIZV, TOVAR.AVAIL, SALES.KILK, SALES.SUMA FROM `CLIENT`
INNER JOIN SALES ON CLIENT.CLI_ID = SALES.CLI_ID
INNER JOIN TOVAR ON TOVAR.TOV_ID = SALES.TOV_ID
WHERE MONTH(SALES.DATE) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH) AND SALES.SUMA <= '2000' AND (CLIENT.CLI_ID <=10000 AND CLIENT.CLI_ID > 1000)
Anriuser вне форума Ответить с цитированием
Старый 01.06.2017, 19:07   #3
Anriuser
Пользователь
 
Регистрация: 13.07.2014
Сообщений: 46
По умолчанию

Помогите графы построить я даже не знаю что это
Anriuser вне форума Ответить с цитированием
Старый 01.06.2017, 20:16   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Тоже не знаю чего за графы. Судя по
Цитата:
сравните эффективность выполнения
нужно понимать как альтернативные варианты запроса
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.06.2017, 20:19   #5
Anriuser
Пользователь
 
Регистрация: 13.07.2014
Сообщений: 46
По умолчанию

Поможете с альтернативными?
Anriuser вне форума Ответить с цитированием
Старый 01.06.2017, 20:22   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Дык твой запрос не решает задачи. Нужно сгруппировать по клиенту и товару, просуммировать стоимость за прошлый месяц и выбрать тех клиентов, у которых эта сумма хотя бы по одному товару больше 2000. Не?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.06.2017, 20:23   #7
Anriuser
Пользователь
 
Регистрация: 13.07.2014
Сообщений: 46
По умолчанию

Ну а как тогда сделать?
Anriuser вне форума Ответить с цитированием
Старый 01.06.2017, 20:38   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Ну, например, типа такого, если условие правильно понял
Код:
SELECT DISTINCT IMYA,PRIZV
  FROM CLIENT,
    (SELECT KILK, TOV_ID,SUM(SUMA) AS SUMA
       FROM SALES
       WHERE условие на DATE, тут сам, что за СУБД у тебя не знаю
       GROUP BY KILK, TOV_ID) S
  WHERE CLIENT.CLI_ID=S.KILK AND S.SUMA>2000
DISTINCT если сиквел, что касается фрагментации не понял к чему это
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.06.2017, 20:43   #9
Anriuser
Пользователь
 
Регистрация: 13.07.2014
Сообщений: 46
По умолчанию

у меня нету субд прост оправильно сформировать надо то что я написал то мне и дано. Это распределенная база данных...
Anriuser вне форума Ответить с цитированием
Старый 01.06.2017, 20:51   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Это распределенная база данных
Они все распределенные, ну почти. Но sql для MS SQL, MySQL, FireBird, Oracle и прочее отличается в частностях и не только
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите сформировать запрос к БД на удаление записей Kvinto БД в Delphi 2 24.10.2016 12:13
Indy, Post, Правильно сформировать запрос? XerSon Работа с сетью в Delphi 0 18.02.2013 10:34
сформировать запрос megostudent Свободное общение 6 22.01.2012 21:41
немогу правильно сформировать запрос Gul'ka SQL, базы данных 1 02.12.2011 09:48
сформировать запрос Ghennadiy Общие вопросы Delphi 2 12.02.2011 17:58