私は、各行が複数のタグを持つテーブルをクエリ:MySQLのクエリ - フィルタリングレコードせずに結合されたテーブルでの検索
SELECT
user.*,
GROUP_CONCAT(tag.tag SEPARATOR ", ") as `tags`
FROM
user
LEFT JOIN
user_tag
ON
user_tag.user_id = user.id
LEFT JOIN
tag
ON
tag.id = user_tag.tag_id
GROUP BY
user.id
は今、私はタグでユーザーを検索できるようにします。 だからどこを追加した後、それは次のようになります。
SELECT
user.*,
GROUP_CONCAT(tag.tag SEPARATOR ", ") as `tags`
FROM
user
LEFT JOIN
user_tag
ON
user_tag.user_id = user.id
LEFT JOIN
tag
ON
tag.id = user_tag.tag_id
WHERE
tag.tag LIKE "%engineer%" OR
tag.tag LIKE "%programmer%"
GROUP BY
user.id
これが手段(明らかに)結果が発見された場合、タグテーブルはもうユーザータグのすべてを返していないこと。だから、選択されたカラムtags
は、ユーザがもっと多くのタグを持っていても "php programmer"のように見えるかもしれません。
実際にサブクエリを使用せずに返された結果を制限することなく、結合テーブルを検索する方法はありますか?あなたが別のものを追加することができます
「%engineer%」や「%programmer%」のようなタグが存在するすべてのユーザーの結合レコードが必要なようです。もちろん、EXISTS句はサブクエリとみなされるので、おそらくそれはあなたが答えで欲しいものではありません。そうだった場合は、どのようにクエリを作成するかを示すことができます。 – hardmath