MySQL - SELECT 的内部连接未给出预期结果

MySQL - INNER JOIN with SELECT not giving expected result

我已经尝试解决这个问题一段时间了,但我的 SQL 知识水平阻碍了我。 我必须从几个表格中获取一些信息,我希望我可以只 post 这里我的表格,但系统不允许我但是也许我的问题可以通过查看我的表格来回答。

我正在尝试获取客户报价列表以及每个报价的总数,而每个报价都有多个产品。如果我这样做,就每个报价的总数而言,我会得到正确的结果:

SELECT ROUND(SUM((lineItems.prodPrice + lineItems.prodTax1 + lineItems.prodTax2 + lineItems.prodTax3) * lineItems.prodQty),2) AS price 
  FROM lineItems 
 GROUP 
    BY transId

到目前为止一切顺利,但现在我需要从其他表中获取客户名称、报价#、报价日期。 如果我这样做,我会得到一个错误:

SELECT ROUND(SUM((lineItems.prodPrice + lineItems.prodTax1 + lineItems.prodTax2 + lineItems.prodTax3) * lineItems.prodQty),2) AS price,customers.name,transactions.qteNum,transactions.qteDate FROM lineItems GROUP BY transId
INNER JOIN customers ON transactions.custId = customers.cid
INNER JOIN lineItems ON lineItems.transId = transactions.tid

如果我删除 GROUP BY,就不会再出现错误,但我会得到一行包含全局总数的信息。

绝对不能在 FROM 和 JOINS 之间使用 GROUP BY。 此外,您在最后一个 INNER JOIN 中使用了 table lineItems 而不是 transactions.

我建议您这样查询:

SELECT
    ROUND(SUM((lineItems.prodPrice + lineItems.prodTax1 + lineItems.prodTax2 + lineItems.prodTax3) * lineItems.prodQty),2) AS price,
    customers.name,
    transactions.qteNum,
    transactions.qteDate
FROM lineItems
INNER JOIN transactions ON lineItems.transId = transactions.tid
INNER JOIN customers ON transactions.custId = customers.cid
GROUP BY customers.name, transactions.qteNum, transactions.qteDate