0

表1

表1

表 2

表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 の 1 行を table2 の 0 ~ n 行に関連付けることができます。

table1 の主キーでグループ化すると、結果をテーブル 1 の各行に対して 1 つの結果行に制限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 に答える