Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Запрос мультитабличный с подсчетом сумм


Автор: sunnmas 4.4.2012, 12:59
Бъюсь с составлением одного запросика. Подобный вопрос всплывал пару лет назад. Но теперь даже не помню, решил ли его). 

2 Таблицы:

tab1
id     name
1      Piter
2      Viktor  
3      Tanya
4      Vasya

tab2
id    pokupki
2     20
1     5
4     50
1     40

Хочу получить такой результат:
1    Piter    45  //5+40
2    Viktor  20
3    Tanya  0 libo NULL
4    Vasya  50

Спасибо заранее

Автор: Zloxa 4.4.2012, 13:28
Цитата(sunnmas @  4.4.2012,  13:59 Найти цитируемый пост)
Бъюсь с составлением одного запросика

Если бы вы бились, у вас были бы версии решений, которые вас бы не удовлетворяли. А так как версий нет, а задача уровня ниже чем начального - вы просто ленитесь. smile
Код

select tab1.id, max(tab1.name) as name, sum(pokupki) as pokupki
from tab1
left join tab2 on tab2.id = tab1.id
group by tab1.id

Автор: sunnmas 4.4.2012, 13:51
Спасибо большое, добрый человек. Варианты приводить не стоило - точно не верные, а вот читаю про JOIN, GROUP BY, AS третий день. Теперь незнаю как вставлять условие в суммирование: Складывать покупки, только за определенный период времени (еще один столбец с датой добавляется во вторую таблицу)

Автор: Zloxa 4.4.2012, 14:08
Цитата(sunnmas @  4.4.2012,  14:51 Найти цитируемый пост)
Складывать покупки, только за определенный период времени (еще один столбец с датой добавляется во вторую таблицу) 

Код

left join tab2 on tab2.id = tab1.id and tab1.`date` between :from_date and :to_date

Автор: sunnmas 4.4.2012, 14:54
Дата покупки во второй таблице. И условие должно относится к SUM, т.е. складывать, если попадает в пределы, и не складывать, если не попадает. 

Если по человечески: ведомость по клиентам о проделанных покупках, совершенных за период. 

Автор: Zloxa 4.4.2012, 15:25
Цитата(sunnmas @  4.4.2012,  15:54 Найти цитируемый пост)
Дата покупки во второй таблице.

да, ошибся. Вы хотите чтобы я сам исправился и заменил еденичку на двоечку, или сможете сами поправить -за меня?

Автор: sunnmas 4.4.2012, 15:28
не в этом дело. Не работает принцип))) Не злитесь.

Автор: Zloxa 4.4.2012, 15:59
Цитата(sunnmas @  4.4.2012,  16:28 Найти цитируемый пост)
 Не работает принцип)))

Обоснуйте

Автор: sunnmas 5.4.2012, 10:05
Вот натыкал в phpmyadmin

Автор: sunnmas 5.4.2012, 10:05
а вот в чем заковыка

Автор: sunnmas 5.4.2012, 10:10
Ожидаемый результат

1  vasya  50
2  Mari   30
3  Vital  NULL

Автор: Zloxa 5.4.2012, 10:15
Цитата(sunnmas @  5.4.2012,  11:05 Найти цитируемый пост)
а вот в чем заковыка 

мы же вроде договорились, что вы в состоянии единичку на двоечку заменить самостоятельно - нет?

Автор: sunnmas 5.4.2012, 10:47
капец))) мне нужно меньше курить анашу smile . чета туплю неподеццки. Пора идти проспаться

Добавлено через 11 секунд
пасиба

Добавлено через 35 секунд
закроем

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)