需要构建SQL查询
我有两张桌子
tbl_cat
_________________
cat_id | cat_name
tbl_pro
__________________________
pro_id | pro_name | cat_id
现在我需要行
的数据e.g
category name | pro name 1 | pro name 2 | pro name 3
OR
Category name | pro name 1 , pro name 2 , pro name 3
我的查询
SELECT ct.cat_name,
cp.proname
FROM tbl_cat ct
JOIN tbl_pro cp
WHERE ct.cat_id=cp.cat_id;
它显示了这样的结果
_____________________________
cat Name | Pro Name
cat Name | Pro Name 1
cat Name | Pro Name 2
答案 0 :(得分:0)
$result = mysql_query"
SELECT tbl_cat.CatName, tbl_pro.ProName1, tbl_pro.ProName2, tbl_pro.ProName3
FROM tbl_cat
LEFT JOIN tbl_pro
ON tbl_cat.cat_id=tbl_pro.cat_id
";
while($row = mysql_fetch_array($result)) {
echo "Category: " . $row[CatName] . " Product1: " . $row[ProName1] . " Product2: " . $row[ProName2] . " Product3: " . $row[ProName3];
}
答案 1 :(得分:0)
如果您使用的是sqlserver2008 R2或更高版本试试这个:
select ct.cat_name,
STUFF(
(SELECT DISTINCT ',' + cp.pro_name
FROM tbl_pro cp INNER JOIN tbl_cat ci on ci.cat_id=cp.cat_id
where ci.cat_id = ct.cat_id
FOR XML PATH (''))
, 1, 1, '') AS ProductList
FROM tbl_cat ct
GROUP BY ct.cat_name,ct.cat_id
答案 2 :(得分:0)
您没有说明您的DBMS,因此这适用于Postgres:
SELECT ct.cat_name, string_agg(cp.proname, ',')
FROM tbl_cat ct
JOIN tbl_pro cp ON ct.cat_id=cp.cat_id
GROUP BY ct.cat_name
ORDER BY ct.cat_name;