Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с запросом (вывод суммы) / 7 сообщений из 7, страница 1 из 1
14.04.2005, 11:47
    #33015370
com100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом (вывод суммы)
Здравствуйте.
помогите составить запрос.

Есть таблица Дата (Date)
Date
2005-01-01
2005-01-02
2005-01-03
2005-01-04
......

Есть таблица Заказы (zakaz)

__id__|__date___|__zakaz__
__1__|2005-01-01|заказ1
__2__|2005-01-01|заказ2
__3__|2005-01-03|заказ3
__4__|2005-01-05|заказ4
__5__|2005-01-06|заказ5
__6__|2005-01-06|заказ6
......


Есть таблица Метры, в которой стоят метры к конкретным заказам (metr)

__id__|_id_zakaz_|metr
__1__|__2_______|_34_
__2__|__4_______|_10_
__3__|__6_______|_15_

и есть таблица VIP заказов, в которой показаны, какие заказы VIP

__id__|_id_zakaz_|_vip_
__1__|__2_______|_yes_
__2__|__4_______|_yes_
__3__|__6_______|_yes_

Стоит задача, показать, сколько заказов на каждый день и сколько метров на каждый день без учета метров VIP заказов.

Я могу сделать запрос, который возвратит кол-во заказо и кол-во метров на каждый день. но как сделать так, что бы он возвращал сумму только не VIP запросов. а кол-во заказов выводил с VIP заказами не могу понять.
=(((

SELECT distinct(date.date) as alldate,
count(zakaz.zakaz) as vsego,
sum(metr.metr) as metr,
FROM date
left join zakaz on date.date=zakaz.date
left join metr on (zakaz.id=metr.id_zakaz )
where MONTH(date.date)=4 AND YEAR(date.date)=2005 group by alldate

Друзья, помогите пожалуйста.
...
Рейтинг: 0 / 0
14.04.2005, 11:57
    #33015407
Помогите с запросом (вывод суммы)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 SELECT zakaz.date, COUNT(*) AS vsego, SUM(metr.metr) AS metr
 FROM zakaz
  JOIN metr ON (zakaz.id=metr.id_zakaz)
 WHERE MONTH(zakaz.date)= 4  AND YEAR(zakaz.date) =  2005  
     AND NOT EXISTS (
        SELECT *
        FROM vip 
        WHERE vip.id_zakaz = zakaz.id_zakaz             
     )
 GROUP BY zakaz.date
...
Рейтинг: 0 / 0
15.04.2005, 12:02
    #33017756
com100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом (вывод суммы)
Спасибо большое, но...
К сожалению, этот запрос не считает все заказы(вместе с VIP) на каждый день.

Например, если на 1 число есть 2 заказа, один (vip) на 20 метров, второе (простой) на 10 метров, то запрос выдает кол-во метров правильное (10 метров, без учета метража VIP заказа) , а кол-во заказов неправильно ( выдает 1, а должно быть 2)
...
Рейтинг: 0 / 0
15.04.2005, 13:04
    #33017998
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом (вывод суммы)
Код: plaintext
1.
2.
3.
4.
5.
SELECT zakaz.date, COUNT(*) AS vsego, SUM(metr.metr*(vip.vip<>'yes')) AS metr
FROM zakaz
JOIN metr ON (zakaz.id=metr.id_zakaz)
JOIN vip ON (zakaz.id=vip.id_zakaz)
WHERE MONTH(zakaz.date)= 4  AND YEAR(zakaz.date) =  2005  
GROUP BY zakaz.date
...
Рейтинг: 0 / 0
15.04.2005, 15:29
    #33018412
com100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом (вывод суммы)
Спасибо, показывает 2 заказа (вместе с VIP - это правильно), однако сумма метров стоит 0 (Нуль)
Если ставить SUM(metr.metr*(vip.vip='yes')) то выводит только сумму на VIP заказы
Скажите пожалуйста. а как работает это выражение SUM(metr.metr*(vip.vip<>'yes')) ???
Спасибо.
...
Рейтинг: 0 / 0
15.04.2005, 17:17
    #33018778
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом (вывод суммы)
Скажите пожалуйста. а как работает это выражение SUM(metr.metr*(vip.vip<>'yes')) ???

Очень просто.
Значение выражения (vip.vip<>'yes') равно 0, если ложь (условие не выполняется); и равно 1, если истина (выполняется).
Об этом можно спокойно почитать в базовой документации.

Твоя проблема, видимо, связана с тем, что в поле vip может быть либо 'yes' либо null. Тогда либо добавь в выражение проверку на null, либо прописывай что-нибудь (напр. 'no', по DEFAULT значению).
...
Рейтинг: 0 / 0
15.04.2005, 17:45
    #33018874
com100
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом (вывод суммы)
Спасибо большое.
Вроде разобрался :-)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с запросом (вывод суммы) / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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