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