2012-01-06 3 views
0

Я пытаюсь найти лучший способ написать этот запрос Sql. Мне нужно получить общее количество рекламных писем, прочитанных клиентом, которые были отправлены им. Таким образом, у нас есть таблица, в которой хранится информация о клиентах, таблица, в которой хранятся их данные для входа и таблица, в которой хранятся ссылки на разные электронные письма, отправленные клиентам, и таблица, в которой регистрируются клики.Создайте запрос для подсчета и других столбцов

Это то, что у меня есть.

Select Customer.CustomerId, 
Customer.FirstName, 
Customer.LastName, 
Customer.email, 
Customer.Phone 
From Customer 
Join LoginInformation 
ON customer.CustomerId = LoginInformation.CustomerId 
JOIN ProductLinks 
ON LoginInformation.LoginId= ProductLinks.LoginId 

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

ClickID 
ProductLinkID 
LoginId 

мне нужны следующие выходные

Customer.CustomerId, 
    Customer.FirstName, 
    Customer.LastName, 
    Customer.email, 
    Customer.Phone, 
    Total Clicks (this can be a sum of all the porductlinks every clicked) 

с использованием SQL и C#

+0

Использование COUNT() и GROUP BY – adatapost

+0

Пожалуйста, проверьте часто задаваемые вопросы о репутации http://stackoverflow.com/faq#reputation – gbn

ответ

0

Это должно сделать трюк:

Select Customer.CustomerId, 
Customer.FirstName, 
Customer.LastName, 
Customer.email, 
Customer.Phone, 
Count(ClickId) [Total Clicks] 
From Customer 
Join LoginInformation 
ON customer.CustomerId = LoginInformation.CustomerId 
JOIN ProductLinks 
ON LoginInformation.LoginId= ProductLinks.LoginId 
JOIN Click 
ON Click.LoginId = LoginInformation.LoginId 
GROUP BY Customer.CustomerId, 
Customer.FirstName, 
Customer.LastName, 
Customer.email, 
Customer.Phone 
+0

спасибо .. я постараюсь это – user1133650

+0

Я думаю, что @gbn прав насчет левого соединения – ivowiblo

1

Вам нужна такая конструкция. Обратите внимание на 2 колонки LEFT JOIN на Щелк

Select 
    Cu.CustomerId, 
    Cu.FirstName, 
    Cu.LastName, 
    Cu.email, 
    Cu.Phone, 
    Count(Ck.LoginId) AS [Total Clicks] 
From 
    Customer Cu 
    Join 
    LoginInformation LI ON Cu.CustomerId = LI.CustomerId 
    JOIN 
    ProductLinks PL ON LI.LoginId= PL.LoginId 
    LEFT JOIN 
    Click Ck ON LI.LoginId = Ck.LoginId ON PL.ProductLinkId = Ck.ProductLinkId 
GROUP BY 
    Cu.CustomerId, 
    Cu.FirstName, 
    Cu.LastName, 
    Cu.email, 
    Cu.Phone;