2015-10-12 3 views
0

Я хочу показать цель, полученную или не относящуюся к категории, мудрая, im не получая надлежащего счета в столбце отправленных ссылок, количество ссылок на ссылки идет не так. результат умножается на отсутствие присвоенных категорий. фактические представленные ссылки 15. но его показ 15 * 4 т 60неверные результаты и количество входящих запросов sql

мои выборочные данные

select CatId,DayName,DayTarget,ProjectID from Tbl_DaySubmission where ProjectID='3'and DayName='FRIDAY' 

CatId DayName DayTarget ProjectID 
35  Friday 5   3 
3  Friday 4   3 
6  Friday 5   3 
2  Friday 15   3 


select LinkId,LnkSubmsnDate,LnkSubmtdBy,ProjectId,CategoryId from tbl_Link where LnkSubmsnDate='2015-10-09' 

LinkId LnkSubmsnDate LnkSubmtdBy ProjectId CategoryId 
147950 2015-10-09  swapna  3   2 
147951 2015-10-09  swapna  3   2 
147952 2015-10-09  swapna  3   2 
147953 2015-10-09  swapna  3   2 
147954 2015-10-09  swapna  3   2 
147955 2015-10-09  swapna  3   2 
147956 2015-10-09  swapna  3   2 
147957 2015-10-09  swapna  3   2 
147958 2015-10-09  swapna  3   2 
147959 2015-10-09  swapna  3   2 
147960 2015-10-09  swapna  3   2 
147961 2015-10-09  swapna  3   2 
147962 2015-10-09  swapna  3   2 
147963 2015-10-09  swapna  3   2 
147964 2015-10-09  swapna  3   2 
147965 2015-10-09  swapna  3   35 

мой запрос

SELECT 
c.Categoryname 
, ds.DayTarget 
, CASE WHEN (COUNT(LinkId) > 0) THEN l.LnkSubmsnDate 
ELSE NULL END AS [LnkSubmsnDate] 
, CASE WHEN (COUNT(LinkId) > 0) THEN l.LnkSubmtdBy 
ELSE NULL END AS [LnkSubmtdBy] 
, COUNT(LinkId) AS submittedLinks 
, (CASE 
    WHEN DayTarget=COUNT(LinkId)  THEN 'Reached' 
    WHEN DayTarget-COUNT(LinkId) < 1 THEN 'Reached' 
    WHEN DayTarget-COUNT(LinkId) >= 1 THEN 'Not Reached' 
END) AS performance 
FROM tbl_Category AS c 
INNER JOIN Tbl_DaySubmission AS ds ON ds.CatId = c.CategoryId 
LEFT JOIN (SELECT * FROM tbl_Link WHERE LnkSubmsnDate='2015-10-12' and ProjectId='109' and LnkSubmtdBy='swapna') AS l ON l.ProjectId = ds.ProjectID AND l.CategoryId = ds.CatId 
WHERE ds.ProjectID = 109 
GROUP BY c.Categoryname, ds.DayTarget, l.LnkSubmsnDate, l.LnkSubmtdBy 
ORDER BY l.LnkSubmtdBy 

я нужен выход, как этот

Categoryname DayTarget LnkSubmsnDate LnkSubmtdBy submittedLinks performance 
Classifieds  15   2015-10-09 swapna  15    Reached 
BlogCommenting  5   2015-10-09 swapna  1   Not Reached 
ForumSites   4             Not Reached 
Directorysites  5             Not Reached 

my output

ответ

0

Когда вы присоединяетесь к tbl_Category и Tbl_DaySubmission и tbl_Link, вполне вероятно, что вы считаете несколько идентификаторов многократными.

Я полагаю, в вашем случае, если вы хотите посчитать связанные ссылки, вы можете просто заменить

COUNT(LinkId) 

с

COUNT(DISTINCT LinkId) 

, чтобы получить правильный номер.

Смежные вопросы