Php SQL JOIN语句-导出前生成数据
我试图在导出到csv格式之前生成数据,但im未能获得正确的数据Php SQL JOIN语句-导出前生成数据,php,mysql,sql,Php,Mysql,Sql,我试图在导出到csv格式之前生成数据,但im未能获得正确的数据 Table : products products_id | products_image 2 | a.jpg 1786 | b.jpg Table : product_description products_id | products_description | language_id 2 | BM description | 6
Table : products
products_id | products_image
2 | a.jpg
1786 | b.jpg
Table : product_description
products_id | products_description | language_id
2 | BM description | 6
1786 | BM description | 6
1786 | CN description | 4
1786 | EN description | 1
我尝试获得如下输出:
products_id | products_image | p_description_6 | p_description_4 | p_description_1 |
2 | a.jpg | BM description | | |
1786 | b.jpg | BM description | CN description | EN description |
我当前的查询如下,但此查询未能在同一行中生成产品描述:
$select = "SELECT p.*, pd.* FROM products p LEFT JOIN product_description pd on p.products_id=pd.products_id group by p.products_id";
select
a.products_id,
a.products_image,
group_concat(b.products_description) as descriptions,
group_concat(b.language_id) as lang_ids
from products a
left join
product_description b on b.products_id = a.products_id
group by a.products_id
试一试
SELECT
P.products_id,
p.products_image,
MAX(CASE WHEN language_id = 6 THEN products_description END) AS p_description_6,
MAX(CASE WHEN language_id = 4 THEN products_description END) AS p_description_4,
MAX(CASE WHEN language_id = 1 THEN products_description END) AS p_description_1
FROM
products P
INNER JOIN
product_description D ON P.products_id = D.products_id
GROUP BY
P.products_id,
p.products_image
您可以使用
GROUP\u CONCAT
在同一行中生成产品描述:
$select = "SELECT p.*, pd.* FROM products p LEFT JOIN product_description pd on p.products_id=pd.products_id group by p.products_id";
select
a.products_id,
a.products_image,
group_concat(b.products_description) as descriptions,
group_concat(b.language_id) as lang_ids
from products a
left join
product_description b on b.products_id = a.products_id
group by a.products_id
可能不同的
语言id的数量是固定的还是可变的?语言id是固定的。如何在同一行中回显3个产品描述?