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
我已经尝试解决这个问题一段时间了,但我的 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