1

投稿テーブルの行を用語テーブルに結合しようとしています。データベースの投稿とデータベース構造はワードプレスと同じです。1 つの行を複数の行に結合する方法がわかりません。

クリア 例:

ポストテーブル:

post_id
post_title
post_content
post_dateline
post_owner

条件表:

term_id
term_name
term_title
term_type

term_relationships テーブル:

post_id
term_id

今私は持っています:ID値3の投稿。id 値 (4,6,7) を持つ 3 つの用語

term_relationships 行は次のようになります。

  post_id      term_id
     3            4
     3            6
     3            7

これらすべての情報を 1 つのクエリで取得することは可能ですか?それとも、最初に投稿をクエリしてから、用語情報を取得してみてください。

4

5 に答える 5

1

mysql の GROUP_CONCAT 関数を使用すると、複数の行が 1 つの行に結合されますが、結果はカンマ区切りのフィールドとして返されます。

于 2012-05-04T06:19:18.833 に答える
0

何のために必要ですか?1 つのクエリを使用してそれを取得することは、非常に非生産的だと思います。

なぜ 2 つのクエリを使用しないのですか?

SELECT * FROM posts;
SELECT * FROM terms WHERE term_id IN (SELECT term_id FROM term_relationships WHERE post_id = $post_id);

私の英語でごめんなさい

于 2012-04-29T19:07:08.290 に答える
0

あなたの要件を正しく理解している場合は、次を試してください。

select * from post_table p
left join terms_table t on p.post_id = t.term_id

または、別のオプションは次のとおりです。

select *, (select term_id from term_table where term_id=p.post_id) from post_table p
于 2012-04-29T18:59:51.227 に答える
0

マッピング テーブルとの結合を開始し、両方のテーブルで左結合を使用してデータを追加しますか?

SELECT * FROM  term_relationships 
 LEFT OUTER JOIN terms ON term_relationships.term_id = terms.term_id 
 LEFT OUTER JOIN posts ON term_relationships.post_id = posts.post_id
于 2012-04-29T19:00:08.703 に答える
0

探している結合のタイプは LEFT JOIN です。このようなもの:

Select * from post p
left join term_relationships r on r.post_id = p.id
left join terms t on t.term_id = r.term_id
于 2012-04-29T18:58:24.820 に答える