-1

鬼ごっこ

tag_id      tag          post_id 
--------------------------------
1           category1    1
2           category2    1
3           etc          2
4           category3    1

役職

post_id title
-------------
1       title1

title1タグに含まれているので、どうすれば入手できますかcategory1&&category2

何かのようなもの

SELECT TITLE 
  FROM post, tag 
 WHERE tag.post_id = post.post_id 
   AND tags.tag = 'category1','category2'
4

2 に答える 2

3

タイトルに「category1」と「category2」の両方があるかどうかを確認するには、次のSQLクエリを使用できます。

SELECT title 
FROM post 
JOIN tag ON post.post_id = tag.post_id 
WHERE tag.tag_id IN (SELECT tag_id FROM tag WHERE tag = 'category1')
AND tag.tag = 'category2';

他のカテゴリを確認するには、WHERE句を繰り返すだけです。

SELECT title 
FROM post 
JOIN tag ON post.post_id = tag.post_id 
WHERE tag.tag_id IN (SELECT tag_id FROM tag WHERE tag = 'category1')
AND tag.tag_id IN (SELECT tag_id FROM tag WHERE tag = 'category2')
AND tag.tag = 'category3';

これにより、3つのカテゴリすべてを持つタイトルの結果が返されます。

于 2012-11-10T05:28:21.020 に答える
1

次のように両方のテーブルを結合できます。

SELECT post.* 
FROM post 
LEFT JOIN tag
ON post.post_id = tag.post_id
WHERE tag.tag IN ('category1','category2')
GROUP BY post.post_id
HAVING COUNT(post.post_id) >1;

このSQLFiddleを参照してください

注:句を使用しない場合HAVING、単一の値が存在するレコードも返されます

このSQLFiddleを参照してください

同様のテーブル構造を持つ同様の要件を参照してください。

于 2012-11-10T06:50:21.493 に答える