簡體   English   中英

MySQL選擇查詢數據加入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM