[英]Mysql select query data joining
這是我的第一個查詢
SELECT
tax_productid,
CONCAT(GROUP_CONCAT(tax_code SEPARATOR " "), " ", sum(tax_iva), "%") AS tax
FROM tb_tax t group by tax_productid order by tax_productid, prd_type desc;
會傳回適用於產品的適當稅款(多種稅種可能適用於單一產品)
輸出數據一樣。
tax_productid tax
=========================
1 tax1 tax2 10%
2 tax1 tax2 20%
3 tax1 tax2 30%
現在有另一個表product
,查詢就像
SELECT * FROM product ORDER BY productName;
返回10條產品記錄。
我想獲取明智的產品稅單,但如果沒有稅,請顯示null
SELECT
t1.*,
CONCAT(GROUP_CONCAT(tax_code SEPARATOR " "), " ", sum(tax_iva), "%") AS tax
FROM
product t1, tb_tax t2
WHERE
t2.tax_product = t1.id;
該查詢僅返回3行。 如果表tb_tax
沒有產品條目,那么我想列出所有產品,然后返回null。 所以我怎么能做到這一點。
您的查詢使用INNER JOIN
,在這種情況下,您應該使用LEFT JOIN
:
SELECT
t1.*,
t2.tax
FROM
product t1
LEFT JOIN (
SELECT
tax_productid,
CONCAT(GROUP_CONCAT(tax_code SEPARATOR " "), " ", sum(tax_iva), "%") AS tax
FROM tb_tax
GROUP BY tax_productid
) t2 ON t2.tax_productid = t1.id
使用LEFT JOIN
。
SELECT
t1.*,
CONCAT(GROUP_CONCAT(tax_code SEPARATOR " "), " ", sum(tax_iva), "%") AS tax
FROM
product t1
LEFT JOIN
tb_tax t2
ON
t2.tax_product = t1.id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.