簡體   English   中英

在mysql查詢中連接表?

[英]joining tables in mysql query?

我想對兩個表“產品”和“類別”運行查詢,我的產品表中有30條記錄。 product表有一個列名category_ids varchar(255),它為產品表的每個記錄以類型(10,11,12,130,..)的格式存儲類別的ID。 在排序中,產品可以是多個類別。 具有列名parent_id的類別表,該列是該類別的父類別。

我想列出該產品所有類別的記錄。

例如,查看id = 7的products表的一條記錄。

    product_Id = 7,
    category_ids = '213,215,216',
    product_name = 'Ponds', 
    .....

表示產品池具有三個類別= category.id = 213,category.id = 215和category.id = 216。

我想在這里列出所有三個池塘記錄,例如這種格式:=

product_Id | product_name | category_name | parent_category_name
   7           ponds          cream              chemical
   7           ponds          medicine           chemical
   7           ponds          powder             Ayurvedic    

我正在嘗試與此查詢:-

select
p.id as product_id,
p.product_name,
child.name as category_name,
parent.name as parent_category_name
from category child 
left join products p on child.id in(p.category_ids) 
left join category parent on parent.id = child.parentid and parent.parentid = 0
where p.id = 7  

以上查詢只獲得一條記錄,而不是上述所有三條記錄。

如上所述,將應用此查詢中的條件和加入以獲得結果。

很抱歉,花費您寶貴的時間。

任何建議和想法將不勝感激。

非常感謝。

嘗試改變ON狀態 -

LEFT JOIN products p ON child.id IN(p.category_ids) 

- >

LEFT JOIN products p ON FIND_IN_SET(child.id, p.category_ids)

...因為:

SELECT 1 IN ('1,2,3') find_1, 2 IN ('1,2,3') find_2;
+--------+--------+
| find_1 | find_2 |
+--------+--------+
|      1 |      0 | -- 0 !
+--------+--------+


SELECT FIND_IN_SET(1, '1,2,3') find_1, FIND_IN_SET(2, '1,2,3') find_2;
+--------+--------+
| find_1 | find_2 |
+--------+--------+
|      1 |      2 |
+--------+--------+

GROUP_CONCAT功能。

例:

SELECT p.product_Id, p.product_name, GROUP_CONCAT(c.category) FROM products p
  JOIN category c
    ON FIND_IN_SET(child.id, p.product_Id)
GROUP BY p.product_Id;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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