2

私は3つのテーブルを持っています、

投稿、タグ、Posts_Tags_Link

投稿には次のものがあります:id、content

タグには次のものがあります:id、tag

Posts_Tags_Linkには次のものがあります:post_id、tag_id

基本的に、タグが投稿にリンクされている場合、これは多対多の関係であるため、Posts_Tags_Linkにエントリが作成されます。

とにかく、私はいくつかの検索を行い、特定のキーワードにリンクされている投稿からすべての行を返したいと思います。

例:

投稿:

id | content
 1 | some stuff
 2 | more stuff
 3 | stuff again

タグ:

id | tag
 1 | first
 2 | second
 3 | third
 4 | fourth

Posts_Tags_Link

post_id | tag_id
      1 | 1
      1 | 2
      2 | 2
      3 | 3
      3 | 4

と検索しsecondて戻りたい

id | content
 1 | some stuff
 2 | more stuff

これには結合を使用すると仮定します。postsテーブルをpost_idのリンクテーブルに結合し、リンクテーブルをリンクテーブルのtag_id列のタグテーブルに結合しますか?

それは正しいと思いますが、検索に一致する行のみが必要な場合(どこではないなど)、同じように使用しますか、それとも別の結合の1つが機能しますか?

検索した場合とsec同じ結果になるようにしたいsecondので、likeを使用してこれを実行する必要があると思いますか?

4

2 に答える 2

3

たとえば、3つのテーブルから検索するため、これらのテーブルを結合する必要があります。

SELECT  a.*
FROM    post a
            INNER JOIN Posts_Tags_Link b
                on a.id = b.post_id 
            INNER JOIN Tag c
                ON b.tag_tag_id = id
WHERE   a.content like '%keyword%' OR     -- build you conditions here
        c.tag like '%keyword%'
于 2012-09-10T04:30:07.530 に答える
0

次のクエリを使用してみてください。

SELECT p.id, p.content FROM
Posts_Tags_Link ptl 
    INNER JOIN Posts p ON p.id = ptl.post_id
    INNER JOIN Tags t ON t.id = ptl.tag_id
WHERE t.tag = 'second'
于 2012-09-10T04:58:32.267 に答える