0
我有一个SQL查询问题和()
SELECT accounting.id, enclosure.time, enclosure.enc_id_, enclosure.txt, accounting.type_id, accounting.amount, accounting.invoice_id, invoice.invoice_id_, accounting.subaccountoff_id
FROM $this->db.accounting accounting
INNER JOIN $this->db.enclosure enclosure ON enclosure.id=accounting.enc_id
LEFT JOIN $this->db.balance_accounting balance_accounting ON balance_accounting.accounting_id=accounting.id
LEFT JOIN $this->db.invoice invoice ON invoice.id=accounting.invoice_id
LEFT JOIN $this->db.book_enclosure book_enclosure ON book_enclosure.enc_id=enclosure.id
WHERE accounting.group_id='".$_SESSION['gid']."' && (accounting.subaccount_id='$id' || accounting.subaccountoff_id='$id') && accounting.type_id <= 4 && book_enclosure.enc_id IS NULL
ORDER BY enclosure.time DESC, enclosure.enc_id_ DESC
当我在SELECT子句中添加SUM()查询只返回一行?
这样的..
SELECT accounting.id, enclosure.time, enclosure.enc_id_, enclosure.txt, accounting.type_id, accounting.amount, accounting.invoice_id, invoice.invoice_id_, accounting.subaccountoff_id, SUM(balance_accounting.amount) AS amount_off
FROM $this->db.accounting accounting
INNER JOIN $this->db.enclosure enclosure ON enclosure.id=accounting.enc_id
LEFT JOIN $this->db.balance_accounting balance_accounting ON balance_accounting.accounting_id=accounting.id
LEFT JOIN $this->db.invoice invoice ON invoice.id=accounting.invoice_id
LEFT JOIN $this->db.book_enclosure book_enclosure ON book_enclosure.enc_id=enclosure.id
WHERE accounting.group_id='".$_SESSION['gid']."' && (accounting.subaccount_id='$id' || accounting.subaccountoff_id='$id') && accounting.type_id <= 4 && book_enclosure.enc_id IS NULL
ORDER BY enclosure.time DESC, enclosure.enc_id_ DESC
我也试图通过添加一组,但仍只返回一行
GROUP BY balance_accounting.accounting_id
编辑:
现在我得到一个错误:列 'accounting_id' 不能为空
SELECT accounting.id, enclosure.time, enclosure.enc_id_, enclosure.txt, accounting.type_id, accounting.amount, accounting.invoice_id, invoice.invoice_id_, accounting.subaccountoff_id, balance_accounting.amount_off
FROM $this->db.accounting accounting
INNER JOIN $this->db.enclosure enclosure ON enclosure.id=accounting.enc_id
LEFT JOIN (
SELECT accounting_id, SUM(amount) AS amount_off
FROM $this->db.balance_accounting
) balance_accounting ON balance_accounting.accounting_id=accounting.id
LEFT JOIN $this->db.invoice invoice ON invoice.id=accounting.invoice_id
LEFT JOIN $this->db.book_enclosure book_enclosure ON book_enclosure.enc_id=enclosure.id
WHERE accounting.group_id='".$_SESSION['gid']."' && (accounting.subaccount_id='$id' || accounting.subaccountoff_id='$id') && accounting.type_id <= 4 && book_enclosure.enc_id IS NULL
ORDER BY enclosure.time DESC, enclosure.enc_id_ DESC
我想过那个..但是不会像这些减慢请求一样加入? – clarkk 2011-03-14 22:19:15
是SUM()和其他聚合函数减速请求... – bensiu 2011-03-14 22:21:20
你认为将查询拆分为更多但更小的查询会更好吗? – clarkk 2011-03-14 22:32:38