假设我有票桌:
票务表:
t\u id,注解
票证详情表:票证详情id、票证id、票证、技术
我想这样做,
select
T.t_id as 'TicektID',
TK.tk_category as 'Category',
ifnull(T.contact_person,'N/A') as 'Contact_Person',
T.comment as 'Employee Comment',
COUNT(TD.t_detail_id) as 'User Comment',
T.t_status
from sun_it_tickets T
LEFT JOIN (
SELECT * from sun_it_ticket_categories
)TK ON TK.tk_id = T.tk_id
LEFT JOIN sun_it_tickets_detail TD ON TD.t_id = T.t_id
where TD.tech_viewed = 0
ORDER BY T.submit_time
其他表也左连接(忽略它)。
我想要的是'sun\u it\u tickets\u detail'表中的行数,其中tech\u view=0。
这将只返回匹配的行仅tech\u viewed=0,但我希望其他结果也“count(td.t\u detail\u id)as'user comment'”,这样,如果没有匹配的结果,将给出count 0。
1条答案
按热度按时间wtzytmuj1#
你需要把条件转移到
on
条款。笔记:
不要对列别名使用单引号。仅对字符串和日期常量使用单引号。
所有非聚合列都应位于
group by
.我怀疑您选择了太多的列,但是您的问题不清楚您想要什么结果。
这个
order by
应该在一个group by
列或聚合表达式。coalesce()
是一个iso/ansi标准函数,所以我更喜欢使用它来替代特定于数据库的函数。