Community Service ТаблицаMysql запрос помощь с тем, где пункт
|student name (id in real table)|hours|year|event name (id in real table)|
|Johnny Smith | 5|2010|Beach Clean-up |
|Samantha Bee | 3|2011|Daily Show Volunteering |
|Samantha Bee | 2|2011|Daily Show Bake Sale |
|Bilbo Baggins | 10|2011|The Shire Feast Setup |
Из этой таблицы я хотел бы следующий вывод:
Часы в 2011 году:
Johnny Smith: 0 (his hours are in 2010)
Samantha Bee: 5
Bilbo Baggins: 10
Вот моя неудачная попытка:
mysql_query("select name,
sum(hours)
from community_service
where year = '2011'
or year is null
group by name");
I unde Я не знаю, как это сделать правильно.
Заранее благодарен!
Поскольку мой Simplied запрос кажется, путает людей, вот весь энчилада:
SELECT DISTINCT contacts.contactID,
sum(hours) as hours,
contacts.first,
contacts.last,
contacts.graduates
from contacts
left join comm_stud using (contactID)
left join comm_svc using (csID)
left join tbl_yeardiv on comm_svc.termID = tbl_yeardiv.yeardivID
WHERE (year = '2010-11')
group by contacts.contactID
tbl_yeardiv содержит школьные термины, как осенний и весенний семестры. comm_stud присоединяет студентов к каждому событию comm_svc.
Основываясь на том, что вы пытаетесь сделать, мне кажется, что эта база данных нуждается в редизайне. – Chris
@ Крис, почему? – Nicolas78
Почему бы не иметь стол для людей и таблицу обслуживания. Человек - это лицо, а информация о нем и ее таблице обслуживания - год/часы для данного года. В этой таблице выше, как вы предоставляете услугу в 2010 году и 2011 году без двух записей для этого человека. Кроме того, что происходит, когда 2 человека имеют одно и то же имя (требуется первичный ключ) и оба предоставляют услугу в том же году (предполагает необходимость в таблице услуг с функциональным ключом, ссылающимся на таблицу лиц)? – Chris