나는 '태그'시스템을 구축 중입니다. 태그 시스템이 아니기 때문에 충분히 인용했지만동적 양을 기준으로 데이터베이스를 쿼리하는 중
분명히 태그를 처리 할 때 사용자는 여러 태그를 매우 잘 사용하고 결과를 더 큰 깊이로 필터링 할 것을 기대할 수 있습니다.
내가 겪고있는 문제는 정확히 어떻게 해야하는지입니다.
나는 지금까지 그것을 할 수 있다고 생각할 수있는 두 가지 방법이 있지만 거기에있는 누군가가 올바른 방법을 설명 할 수 있다면 크게 감사 할 것입니다.
way 1) 각 태그에 대해 개별 쿼리를 수행 한 후 데이터를 정렬/결합/재생합니다. 방법 2)
SELECT i2t.item_id
FROM Item2Tag i2t
INNER JOIN Tag t
ON i2t.tag_id = t.tag_id
WHERE t.tag_text IN ('beach','cloud','waves')
GROUP BY i2t.item_id
위의 내용은 저의 쿼리입니다. 이는 Toxi 솔루션의 수정 버전을 기반으로합니다. 바라건대 당신은 무슨 일이 진행되고 있는지 본다. 본질적으로 3 개의 테이블, 정보를위한 1, 태그를위한 1, 그리고 그들을 연결하는 또 다른 테이블이있다.
이것은 현재 내가하고있는 일입니다. 나는 '해변', '구름', '파도'를 변수로 대체합니다. 그런 다음 PHP 코드 내에서 배열을 쉼표로 구분 된 문자열로 변환하고 단순히 쿼리에 삽입합니다. 그래서 뭔가 같은 : 내가 올바르게 comma..but없이 마지막 태그를 종료 할 필요가 있기 때문에, 조금 단순화를 통해 물론이다
foreach ($tagarray as $tag){
$string = .$tag1.", " }
희망 당신은 점을 얻는다.
때문에, $ 문자열은이 작업을 수행 할 수있는 더 나은 방법이 있나요 '이 tag1, tag2로, TAG3'
SELECT i2t.item_id
FROM Item2Tag i2t
INNER JOIN Tag t
ON i2t.tag_id = t.tag_id
WHERE t.tag_text IN ('$string')
GROUP BY i2t.item_id
동일하게?
이 결과를 얻는 방법은 여러 가지가 있습니다. [has-many-through 관계로 SQL 결과를 필터링하는 방법] (http://stackoverflow.com/questions/7364969/how-to-filter-sql- 많은 결과를 통해 많은 결과를 얻음), 몇 가지 테스트도 있습니다. –