连接表

时间:2016-07-07 12:25:19

标签: mysql phpmyadmin

我正在尝试执行以下查询:

    SELECT
(
    SELECT 
    COUNT(*)
    FROM
    pl_invoices
    JOIN
    pl_invoice_articles
    ON
    pl_invoices.invoice_id = pl_invoice_articles.invoice_article_invoice_id
    WHERE
    pl_invoices.invoice_amount_paid = SUM(pl_invoice_articles.invoice_article_price)
) as 'Aantal Betaald'

所以:我需要知道支付了多少发票,但知道这一点的唯一方法是将所有发票文章的总和与所支付的总金额进行比较。

此查询不起作用,我不知道我做错了什么。有没有人可以帮助我?

非常感谢提前!

2 个答案:

答案 0 :(得分:1)

使用having子句代替where

SELECT cnt as 'Aantal Betaald' from (
    SELECT COUNT(*) AS CNT, invoice_amount_paid  FROM  pl_invoices pl JOIN pl_invoice_articles pla
    ON     pl.invoice_id = pla.invoice_article_invoice_id
    having     pl.invoice_amount_paid = SUM(pla.invoice_article_price)
) tt  ;

答案 1 :(得分:0)

此查询的一个解决方案是计算总和:

select
  invoice_article_invoice_id,
  SUM(invoice_article_price) as tot
from
  pl_invoice_articles
group by
  invoice_article_invoice_id

并将其作为子查询加入pl_invoices表:

select count(*)
from
  pl_invoices inner join (
    select
      invoice_article_invoice_id,
      SUM(invoice_article_price) as tot
    from
      pl_invoice_articles
    group by
      invoice_article_invoice_id
  ) s on pl_invoices.invoice_id = s.invoice_article_invoice_id
where
  pl_invoices.invoice_amount_paid = s.tot