2009-10-23 6 views
0

J'ai une table "Événements" pour les utilisateurs d'ajouter des événements avec les champs suivants:
EventID
EventName
EventSlot (-> slotid)
EventSlotExtra (-> slotid) (en option)
EventLimit

Et j'ai une autre table "Machines à sous"
slotID (int)
SlotTime (ce qui est neuf heures-à-10 heures, dix heures-11 heures, etc.)

J'ai besoin d'interroger les deux tables pour obtenir un total de personnes participant à des événements par SlotTime. Je sais comment faire quand seulement EventSlot est sélectionné mais pas quand EventSlotExtra est également sélectionné. Pouvez-vous aider?
Un grand merciObtenir SUM de deux colonnes liées à une même colonne dans différents tableau

+1

Peut-être pourriez-vous nous indiquer le code que vous avez écrit jusqu'ici? Les gens n'aiment généralement pas écrire votre code pour vous ... –

+0

Vraisemblablement, vous avez également une table des participants qui relie aux événements d'une certaine façon. Ou le «total des gens» est-il dérivé d'une autre manière? – APC

+0

Oui, je le fais. Mais ce n'est pas nécessaire pour cette opération car EventLimit me donne le nombre de participants qui assisteront à chaque événement. – Anelim

Répondre

0

essayer cette

Select s.SlotTime, 
    Count(e.EventId) + Count(x.EventId) EventCount 
From Slots s  
    Left Join Events e 
     On e.EventSlot = s.SlotId 
    Left Join Events x 
     On x.EventSlotExtra = x.SlotId 
Group By s.SlotTime 
1

Cela tombe bien, Merci !!!

Je viens de modifier le code car je cherchais la somme des participants et non le nombre d'événements par créneau mais sinon le code de Charles Bretagna m'a beaucoup aidé! Merci encore!

SELECT  
s.SlotTime, s.SlotID, ISNULL(SUM(x.EventLimit), 0) + ISNULL(SUM(e.EventLimit), 0) 
AS PeopleLimit 
FROM  
Slots AS s 
LEFT OUTER JOIN Events AS e ON e.EventSlot = s.SlotID 
LEFT OUTER JOIN Events AS x ON x.EventSlot1 = s.SlotID 
GROUP BY s.SlotTime, s.SlotID 
ORDER BY s.SlotID; 
Questions connexes