[英]Mysql Query for fetching records using single Query from three tables
[英]Select three records in a single query of a cross table that contains records of two tables - MYSQL
我有一個稱為"product"
的主表,該主表與三個表鏈接:
"product_type",
"feature",
"type_feature"
還有一個稱為"product_feature"
的交叉表,其中包含同一產品的多個功能。
示例一記錄:
我有類似的東西:
產品類別
id_product_type name
1 Phone
特征
id_feature name
1 Memory
2 Color
3 Memory Ram
FEATURE_TYPE
id_feature_type id_feature value
1 1 16GB
2 1 32GB
3 2 Blue
4 2 Black
5 3 2GB
6 3 3GB
產品
id_product id_product_type price quantity model
1 1 100$ 5 Moto-G7
交叉表“ product_feature”(鏈接到“ product”,“ feature”和“ feature_type”):
id_feature id_product id_feature_type
1 1 1
2 1 3
3 1 6
我想查詢顯示此:
id_product type_name price quantity model feature_name value
1 Phone 100$ 5 Moto-G7 Memory 16GB
feature_name2 value2 feature_name3 value3
Color Blue Memory Ram 3GB
我試過了,但是只有我只有一個feature_name和value,我需要三個:
SELECT p.id_product, pt.name, model, price, quantity, f.name AS feature, ft.value
FROM product p
LEFT JOIN product_type pt ON pt.id_product_type = p.id_product_type
LEFT JOIN product_feature pf ON pf.id_product = p.id_product
LEFT JOIN feature f ON f.id_feature = pf.id_feature
LEFT JOIN feature_type ft ON ft.id_feature_type = pf.id_feature_type
GROUP BY p.id_product;
試試這個查詢,它將為您提供結果:
SELECT product.*, product_type.name as TypeName, (SELECT CONCAT( GROUP_CONCAT(feature_type.value), "|", GROUP_CONCAT(feature.name) ) FROM `product_feature` INNER JOIN feature_type on product_feature.id_feature_type = feature_type.id_feature_type INNER JOIN feature on feature_type.id_feature = feature.id_feature WHERE product_feature.id_product=1 GROUP BY product_feature.id_product) as options FROM `product` LEFT JOIN product_type on product.id_product_type = product_type.id_product_type
您將獲得產品的選項,並且必須通過“ |”將這些選項炸開()。 並且您可以通過使用$ count = count(explode(“ |”,$ options))來計數您擁有多少個選項
通過這種方式,您可以獲得所有選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.