개체를 여러 태그에 동시에 일치 시켜서 결과 집합을 모든 태그와 일치하도록 "축소"해야하는 경우가 있습니다. 다음과 같은 MySQL 쿼리를 발견했습니다 :MySQL : 모든 태그와 일치하는 개체 수를 반환합니다.
SELECT *
FROM OBJECTS o
JOIN OBJECTSTAGS ot ON ot.object_id = o.id
JOIN TAGS t ON t.id = ot.tag_id
WHERE t.name IN ('tag1','tag2')
GROUP BY o.id
HAVING COUNT(DISTINCT t.name) = 2
... 여기서 2는 일치하는 태그의 수입니다. 그것은 잘 작동합니다.
그러나 개체 자체 대신 개체의 개수를 반환하는 쿼리가 필요합니다. 이 쿼리는 COUNT(*)
을 SELECT
에 추가하면 혼란스러워 할 것입니다. 나는 예를 들어 id 만 반환하는 것을 주저하고 매우 많은 수를 추가 할 수 있기 때문에 PHP 카운트를 수행하는 것을 주저합니다. 따라서 MySQL을 사용하여 카운트를 반환하고 싶습니다.
누구든지이 작업을 수행하는 좋은 방법을 제안 할 수 있습니까? 두 개의 질의로 그것을 깨는 것은 받아 들일 수있다.
미리 감사드립니다.
명확하게하기 위해이 - 당신이 일치하는 모든 오브젝트의 수, 또는 개체 당 개수를 원하는? 예상 결과의 예가 도움이됩니다. –
@OMG 조랑말 : 결과의 한 숫자 만 개체 개수. 예 : 총 550 개의 객체가 해당 태그와 일치합니다. – Tom
http://www.php.net/manual/en/function.mysql-num-rows.php; 이것은 도움이 될 수 있습니다. 편집 : whoops는 이것이 PHP라고 생각했지만 이것은 무효입니다 – aph107