이미지를 태그와 일치시키는 웹 응용 프로그램이 있으며 태그 검색을 위해 결과를 동적으로 조정할 방법을 만들어야합니다. 그러나, 나는 그 SQL 쿼리를 만드는 깔끔한 방법을 찾을 수 없다. 그리고 그것이 내가 당신의 도움을 필요로하는 곳이다.여러 값과 일치하는 SQL n - to - n
아이디어는 내가 태그를 검색하면 "깨끗한"와 "개"나는 태그 "깨끗한"와 "개"모두가 이미지 결과를 얻을 것입니다. 또한 "little"태그를 포함하면 결과가 세 개의 태그가 연결된 이미지로 좁혀 야합니다.
따라서는 N-에-N과 관련,이 작업을 수행하는 올바른 방법이 필요?
내 자연적인 접근 방식은 같은 코드 뭔가를 생성했지만, 그것은 어디로 나는 확실히 좋아하지 않는다 :
SELECT images.*
FROM images
INNER JOIN image_tags ON ...
INNER JOIN tags ON ...
WHERE tags.tag = @tag1
AND EXISTS
(
SELECT 1
FROM images
INNER JOIN image_tags ON ...
INNER JOIN tags ON ...
WHERE tag = @tag2
AND EXISTS
(
SELECT 1
FROM images
INNER JOIN image_tags ON ...
INNER JOIN tags ON ...
WHERE tag = @tag3
AND EXISTS (...)
...
)
)
은 물론, 그 정말 좋지 않다. 어떤 생각?
감사합니다.
이것은 각 이미지가 아닌 지정된 태그의 행을 반환 할뿐만 아니라 허용되는/허용되는 태그의 수가 매우 엄격합니다. –
'GROUP BY '는 각 태그에 대한 행을 반환하지 않아야합니다. 동적 인 태그 수를 사용하는 방법을 보여주기 위해 질문을 편집했습니다. –
고마워요! HAVING COUNT()를 사용하여 결과를 다시 확인하지는 않았습니다. – Alpha