在研究之后,显然这是一件复杂的事情吗?它看起来不像是一个透视查询,或者它应该是什么?无论如何,这样的两个表:
文章:
id col2 col3
1 .... ....
2 .... ....
3 .... ....
articleImages:
id imgFile artRef
1 img1.jpg 1
2 img2.jpg 1
3 img3.jpg 2
4 ....... 3
5 ....... 3
6 ....... 3
我想选择一切形式"文章"并结合" articleImages"进入行,所以它看起来像这样:
[{
"id":"1",
"col2":"...",
"col3":"...",
"imgFiles":{
"img1.jpg",
"img2.jpg"
}
},{
"id":"2",
"col2":"...",
"col3":"...",
"imgFiles":{
"img3.jpg"
}
},{
"id":"3",
...etc.
}]
我试过了:
"SELECT art.*, ai.imgFile FROM articles art LEFT JOIN articleImages ai ON art.id = ai.artRef ORDER BY art.id desc LIMIT $lim, $limit"
那是错的......每个图像都有不同的行。它不是LEFT JOIN
...这是什么语法?或者是否有更优化的组织方式?我不想制作一个" articleImages"列和内部连接"文章" ...
答案 0 :(得分:1)
如果我的目标正确无误,您可以对查询进行分组并使用GROUP_CONCAT
函数将所有逗号分隔的img名称放在一个字段中:
SELECT art.*,
GROUP_CONCAT(ai.imgFile) imgFiles
FROM articles art
LEFT JOIN articleImages ai
ON art.id = ai.artRef
GROUP BY art.id
ORDER BY art.id desc
LIMIT $lim, $limit