0

表格1

表格1

表 2

表2

这是我通过使用此查询获得的那两个表的结果:

SELECT t1.*, GROUP_CONCAT(t2.content_id) 
FROM news_categories t1 
LEFT JOIN news_content t2 
    ON t2.cat_ids = t1.cat_id 
GROUP BY t1.cat_id

结果生成

结果

如何从GROUP_CONCAT(t2.content_id)与 相关的结果(表)中获取表 2 中的信息content_id

并使用 PHP 从 table2 中检索这些数据

4

1 回答 1

1

好吧,你在这里有一个一对多的关系。这意味着 table1 中的一行可以与 table2 中的 0-n 行相关。

如果您按 table1 的主键分组,则将结果限制为表一中每一行的一个结果行,方法是使用GROUP_CONCAT(table2_col)默认情况下为逗号的分隔符连接 table2_column 的所有匹配行。

使用以下查询:

SELECT
     t1.*, 
     GROUP_CONCAT(t2.content_id) AS content_ids,
     GROUP_CONCAT(t2.title) AS content_titles
FROM 
    news_categories t1 
        LEFT JOIN news_content t2 ON t2.cat_ids = t1.cat_id 
GROUP BY t1.cat_id

或者

SELECT
     t1.*, 
     t2.*
FROM 
    news_categories t1 
        LEFT JOIN news_content t2 ON t2.cat_ids = t1.cat_id 

我建议写出你想要的列,而不是使用 .*

编辑

要分离 php 中的连接值,请查看explode

你像往常一样获取数据,例如

$result = mysqli_query( $query );
while ( $row = mysqli_fetch_assoc( $result ) ) {
    print_r( $row );
}

看看这个例子

于 2013-03-11T08:34:34.470 回答