Session 具有3个表和2个和组的内部联接
我有三张桌子;公司、培训票和考试 公司表: 培训票表: 测试会话表: 我需要这样的东西:Session 具有3个表和2个和组的内部联接,session,Session,我有三张桌子;公司、培训票和考试 公司表: 培训票表: 测试会话表: 我需要这样的东西: C. CODE | COMPANY NAME | 1ST START DATE | TRAINING TICKET TOTAL | CERTIFIED TOTAL 192 ABC ENTERPRISE 2015-02-02 2 1 299 XYZ ENTERPRISE 2015-03-02 1
C. CODE | COMPANY NAME | 1ST START DATE | TRAINING TICKET TOTAL | CERTIFIED TOTAL
192 ABC ENTERPRISE 2015-02-02 2 1
299 XYZ ENTERPRISE 2015-03-02 1 1
有可能吗
我的Sql指令是:
Select *, count(TICKET.CCODE) AS TICKET_TOTAL, count(TEST.CODE) AS CERT_TOTAL
from TICKET
Inner Join COMPANY on TICKET.CCODE = COMPANY.CCODE
Inner Join TEST on COMPANY.CCODE = TEST.CCODE
Group by (TICKET.CCODE),(TEST.CCODE)
Order by TICKET_TOTAL DESC
但对于TICKET_TOTAL和CERT_TOTAL,这两个计数总是等于相同的结果,并且总和是错误的——结果是TICKET_TOTAL=21,CERT_TOTAL=28,但我得到523——排名第一的公司。我得到了答案:
Select COMPANY.CODE, COMPANY.NAME,
MIN(TICKET.STARTDATE), count(TICKET.TICKETID) AS TICKET_TOTAL,
count(TEST.CERTIFIED) AS CERT_TOTAL
from COMPANY
INNER JOIN TICKET ON COMPANY.CODE = TICKET.CCODE
LEFT JOIN TEST ON TICKET.TICKETID = TEST.TICKET
Group by (TICKET.CCODE)
ORDER BY TICKET_TOTAL DESC
1-从公司表中重新排序和星型指示
2-MINTICKET.STARTDATE获取第一个开始日期,必要时使用MAX获取最后一个开始日期
3-将内部联接更改为左联接,因为有些公司在票证表上有票证,但在测试表上没有测试
希望这能对以后的人有所帮助 普遍接受的做法是展示你迄今为止所做的努力,展示你在这个问题上付出了一些努力。@Coshman对我来说最大的问题是第二组和。我简化了表格,但一家公司的第一笔金额是28,第二笔金额是21。我能做的第一个和没有问题3个内部连接+1个组和-第二个组我得到了一些疯狂的结果,比如523。。这两个数字总是相等的。选择*,countTICKET.CCODE作为票证总数,countTEST.CODE作为来自票证上的票证内部加入公司的证书总数。CCODE=COMPANY.CCODE内部加入公司测试。CCODE=TEST.CCODE按票证分组。CCODE,TEST.CCODE按票证排序\u TOTAL DESC
C. CODE | COMPANY NAME | 1ST START DATE | TRAINING TICKET TOTAL | CERTIFIED TOTAL
192 ABC ENTERPRISE 2015-02-02 2 1
299 XYZ ENTERPRISE 2015-03-02 1 1
Select *, count(TICKET.CCODE) AS TICKET_TOTAL, count(TEST.CODE) AS CERT_TOTAL
from TICKET
Inner Join COMPANY on TICKET.CCODE = COMPANY.CCODE
Inner Join TEST on COMPANY.CCODE = TEST.CCODE
Group by (TICKET.CCODE),(TEST.CCODE)
Order by TICKET_TOTAL DESC
Select COMPANY.CODE, COMPANY.NAME,
MIN(TICKET.STARTDATE), count(TICKET.TICKETID) AS TICKET_TOTAL,
count(TEST.CERTIFIED) AS CERT_TOTAL
from COMPANY
INNER JOIN TICKET ON COMPANY.CODE = TICKET.CCODE
LEFT JOIN TEST ON TICKET.TICKETID = TEST.TICKET
Group by (TICKET.CCODE)
ORDER BY TICKET_TOTAL DESC