所以我有2张桌子,发票和发票项目。我想创建一个查询,将两者合并为一个报表表。我遇到的问题是我的查询只返回tblinvoiceitems的第一行,而不是所有适用的。请参阅下面的代码。谢谢!
以下是表格:
invoices
+------+----------+-------------+-------------+------------+----------+-------+---------+
| id | userid | duedate | datepaid | subtotal | credit | tax | total |
+------+----------+-------------+-------------+------------+----------+-------+---------+
| 662 | 436 | 2012-07-01 | 2012-06-05 | 1290.00 | 0.00 | 0.00 | 1290.00 |
+------+----------+-------------+-------------+------------+----------+-------+---------+
| 668 | 441 | 2012-07-01 | 2012-06-11 | 1290.00 | 0.00 | 0.00 | 1290.00 |
+------+----------+-------------+-------------+------------+----------+-------+---------+
invoiceitems
+------+-------------+----------+----------+---------+-----------------+----------+
| id | invoiceid | userid | type | relid | description | amount |
+------+-------------+----------+----------+---------+-----------------+----------+
| 1408 | 662 | 436 | Promo | 436 | Setup Fee | 295.00 |
+------+-------------+----------+----------+---------+-----------------+----------+
| 1409 | 662 | 436 | | 0 | US Standard | 995.00 |
+------+-------------+----------+----------+---------+-----------------+----------+
| 1425 | 668 | 441 | Promo | 441 | Setup Fee | 295.00 |
+------+-------------+----------+----------+---------+-----------------+----------+
| 1426 | 668 | 441 | | 0 | US Standard | 995.00 |
+------+-------------+----------+----------+---------+-----------------+----------+
我想要的表格:
newtable
+------+----------+-------------+-------------+-------------+---------+-----------+------------+
| id | userid | invoiceid | duedate | datepaid | setup | hosting | subtotal |
+------+----------+-------------+-------------+-------------+---------+-----------+------------+
| 1 | 436 | 662 | 2012-07-01 | 2012-06-05 | 295.00 | 995.00 | 1290.00 |
+------+----------+-------------+-------------+-------------+---------+-----------+------------+
| 2 | 441 | 668 | 2012-07-01 | 2012-06-11 | 295.00 | 995.00 | 1290.00 |
+------+----------+-------------+-------------+-------------+---------+-----------+------------+
当前查询:
"INSERT INTO newtable SELECT
tblinvoices.id,
tblinvoices.userid,
tblinvoices.duedate,
tblinvoices.datepaid,
tblinvoices.subtotal,
tblinvoiceitems.invoiceid,
tblinvoiceitems.amount
FROM tblinvoices
INNER JOIN tblinvoiceitems ON tblinvoices.id = tblinvoiceitems.invoiceid";
答案 0 :(得分:0)
使用distinct,2 LEFT JOIN和WHERE子句的组合。
SELECT DISTINCT <***>
LEFT JOIN invoiceitems ii0 ON ii0.id=i.invoiceid
LEFT JOIN invoiceitems ii1 ON ii1.id=i.invoiceid
WHERE ii0.description = 'Setup Fee'
ANN ii1.description = 'US Standard'
此外,您最好为描述和descriptionInvoiceItemRelation表创建单独的表。
答案 1 :(得分:0)
您可以尝试:
SELECT
i.id AS InvoiceID, i.userid, ii.invoiceid, i.duedate,
i.datepaid, i.setup, i.hosting, i.subtotal
FROM
invoices i
INNER JOIN
invoiceitems ii ON i.id = ii.id