나는 각 행은 여러 개의 태그가있는 테이블을 쿼리 : 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 프로그래머"처럼 보일 수 있습니다.
서브 쿼리를 사용하지 않고 실제로 반환 된 결과를 제한하지 않고 조인 된 테이블을 검색 할 수있는 방법이 있습니까? 당신은 다른를 추가 할 수 있습니다
"% engineer %"또는 "% programmer %"와 같은 태그가있는 모든 사용자에 대해 조인 된 레코드가 필요합니다. 물론 EXISTS 절은 하위 쿼리로 간주되므로 아마도 원하는 답변이 아닐 수 있습니다. 그렇다면 어떻게 쿼리를 구성 할 수 있는지 보여줄 수 있습니다. – hardmath