0
我有我試圖清理查詢:需要結合查詢與獨特和計數
我原來的查詢如下:
SELECT h.userid, c.firstname, c.lastname, h.domain, h.nextduedate, h.domainstatus,
(SELECT COUNT(status)
FROM tblinvoices i, tblinvoiceitems ii
WHERE i.userid =h.userid
AND i.id = ii.invoiceid
AND i.STATUS LIKE 'Unpaid'
AND i.TOTAL = 80
AND ii.description LIKE 'Hosted Domain%')
AS invoice_count
FROM tblclients c, tblhosting h
WHERE h.userid=c.id AND c.status='Active'
AND c.id NOT IN (1,2,3,4,5)
AND h.domain LIKE '%thisdomain.com'
AND h.nextduedate<='2012-06-06'
ORDER BY h.domainstatus, h.nextduedate DESC
它的工作原理相當不錯,但它不是100%準確。我得到的所有用戶的「nextduedate」比今天的日期更早,但是,有些用戶使用NULL nextduedate(帳戶已取消,但仍有未付費發票)的未付帳單。
該查詢給我22級的用戶,但如果我運行:
SELECT DISTINCT i.userid, COUNT(i.status)
FROM tblinvoices i, tblinvoiceitems ii
WHERE i.id = ii.invoiceid
AND i.STATUS LIKE 'Unpaid'
AND i.TOTAL = 80
AND ii.description LIKE 'Hosted Domain%')
然後我得到26名的用戶(約8丟失發票)。
下一個到期日是真的顯示他們有多晚,這個查詢的主要重點是顯示所有的用戶與未付的發票。我試圖將第二個查詢與第一個查詢以幾種不同的方式結合起來,但我無法弄清楚,並且我認爲我鎖定了我的服務器。
理想我返回的行應該是這樣的:
用戶ID,名字,姓氏,域名,domainstatus,「交貨期」(這從理論上是最古老的發票之日起,我使用nextduedate因爲它很容易),invoicecount(未付發票的數量)
僅供參考,發票日期是在i.invoicedate
我將不勝感激幫助搞清楚如何優化這個查詢!
更換
DISTINCT
我可以看到製作上發送查詢變化,但該查詢已經被自己的作品。我試圖在合併兩個查詢時使用GROUP BY,但我無法弄清楚如何正確地將它提供給我所需的所有信息。實際上,我從來沒有像原始查詢那樣使用除COUNT(狀態)以外的其他任何東西。 – Dizzy49這是我試圖結合兩個查詢 'SELECT h.userid,c.firstname,c.lastname,h.domain,h.nextduedate,h.domainstatus,i.userid,COUNT(i.status) \t FROM tblclients C,tblhosting小時,tblinvoices I,II tblinvoiceitems \t WHERE h.userid = c.id AND c.status = '有效' \t AND c.id NOT IN(1,2,3,4) \t和h 。域LIKE '%domain.com' AND i.userid = h.userid \t \t AND i.id = ii.invoiceid \t \t AND i.STATUS LIKE '未付' \t \t AND i.TOTAL = 80 \t \t AND ii.description LIKE '%託管' \t AND h.nextduedate <= '2012-06-06' GROUP BY i.userid \t ORDER BY h.domainstatus,h.nextduedate DESC ' – Dizzy49
對不起,還沒有想出如何格式化評論:( – Dizzy49