Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите, плиз с запросом, головой совсем плохой стал / 4 сообщений из 4, страница 1 из 1
04.07.2005, 10:39:42
    #33147356
paul999
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз с запросом, головой совсем плохой стал
Есть таблица выдачи денег:
ID, UserID, Date, F1, F2, F3, ...
ID- номер записи
UserID - номер пользователя
FX - статья выдачи денег
пользователь может брать несколько раз в день разные суммы по разным статьям

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

этот запрос

SELECT DISTINCT P1.Date AS дата, CONCAT(Montagnik.FName,' ',Montagnik.Name) AS монтажник,
SUM(P1.F1) AS зарплата, SUM(P1.F2) AS бензин, SUM(P1.F3) AS проживание, SUM(P1.F4) AS проезд,
SUM(P1.F5) AS посылки, SUM(P1.F6) AS суточные, SUM(P1.F7) AS телефон, SUM(P1.F8) AS материалы,
SUM(P1.F9) AS прочее FROM Montagnik, Hoschast AS P1, Hoschast AS P2 WHERE Montagnik.IDS=P1.MontID
AND P1.Date=P2.Date AND P1.MontID=P2.MontID AND P1.Date='2005-07-04' GROUP BY P1.Date, монтажник

дает удвоение суммы если пользователь брал деньги 2 раза в день
а если добавить AND P1.IDS<>P2.IDS то показывает правильно, но только тех, кто за день брал больше одного раза, можно конечно сделать объединение, но получится очень громоздко, можно ли что-нибудь по изящнее? Мускл 4.0.20
...
Рейтинг: 0 / 0
04.07.2005, 10:54:30
    #33147384
Never
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз с запросом, головой совсем плохой стал
ponjatie normalizacii vam nevedomo?
vmesto Fx sdelaite kod stat'i rashoda i spravochnik statei
...
Рейтинг: 0 / 0
05.07.2005, 09:14:56
    #33149209
paul999
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз с запросом, головой совсем плохой стал
Не уверен что это что-то даст,количество статей расхода невелико, и в каждом поле хранится количество денег именно по этой статье, в данном случае справочник статей невыгоден, слишком много перекрестных ссылок, труднее строить запрос, к тому же меня интересует вариант действий в данном конкретном случае, работа не предусматривает глобальную перестройку базы данных заказчика
...
Рейтинг: 0 / 0
08.07.2005, 12:19:17
    #33156563
paul999
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, плиз с запросом, головой совсем плохой стал
Всем спасибо, война окончена... :) Я сам разобрался:

SELECT Date AS дата, CONCAT(Montagnik.FName,' ',Montagnik.Name) AS монтажник, SUM(F1) AS зарплата, SUM(F2) AS бензин, SUM(F3) AS проживание, SUM(F4) AS проезд, SUM(F5) AS посылки, SUM(F6) AS суточные, SUM(F7) AS телефон, SUM(F8) AS материалы, SUM(F9) AS прочее FROM Hoschast, Montagnik WHERE MontID=Montagnik.IDS GROUP BY монтажник ORDER BY дата, монтажник

был неправильный принцип группировки, теперь даже дополнительные условия не нужны, работает аж летает
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите, плиз с запросом, головой совсем плохой стал / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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