- ベストアンサー
Mysql文の結果を特定のタグで絞り込みたい方法
- PHPとMysqlを使用して、特定のタグで結果を絞り込む方法について質問です。
- tagsテーブルから「うどん」と「そば」のタグに関連する結果を抽出するためのMysql文を作成したいです。
- 回答いただけると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
仕様の詰め次第ですね tagとu_idの組み合わせがユニークかどうかでやり方が異なります たとえばu_id=5の人が一度「そば」を登録した後にダブって「そば」を 登録できるかどうかということ 仮にuniqueを前提にすればこんな感じ //元データ create table tags(id int not null primary key auto_increment,tag varchar(30),u_id int,unique (tag,u_id)); insert into tags values(1,'うどん',5),(2,'そば',5),(3,'うどん',2),(4,'ラーメン',2),(5,'そうめん',1),(6,'そば',3); //ユーザーごとにうどんorそばに合致する件数 SELECT u_id, sum(tag in('うどん','そば')) as agr FROM tags GROUP BY u_id ORDER BY agr DESC //うどんかつそばに合致するユーザー SELECT u_id FROM tags GROUP BY u_id having sum(tag in('うどん','そば'))=2
その他の回答 (1)
- root139
- ベストアンサー率60% (488/809)
HAVING句を使って「うどん」と「そば」がそれぞれ一回以上出現しているものだけを抽出すればよいです。 例) ------------------------------------ SELECT u_id, count(CASE WHEN tag = "うどん" or tag = "そば" THEN 1 ELSE NULL END ) AS `agr` FROM tags GROUP BY u_id HAVING SUM(CASE WHEN tag = "うどん" THEN 1 ELSE 0 END) > 0 AND SUM(CASE WHEN tag = "そば" THEN 1 ELSE 0 END) > 0 ORDER BY agr DESC ----------------------------------------
お礼
回答有り難うございます。
お礼
回答有り難うございます。