다음은 내가하려는 일입니다. 필드 안에 '태그'목록이 있습니다. 사용자가 해당 태그를 사용하여 검색 결과를 자세히 볼 수 있도록 노력하고 있습니다. 여러 단어를 쉼표로 구분하여 구분하고 대조하려면 어떻게합니까
는 사용자가 10 FR, 남성, 간헐적 카테터를 검색하고 싶은 말 : 다음과 같은 필드가 어떻게 표시되는지를 보여줍니다. 일부 태그 (예 : 남성, 여성)가 유사하기 때문에 %와 (과) %를 (를) 사용할 수 없습니다. 당신이 PHP에서와 같이 그것을 배열과 검색으로 깰 수있는 방법이 있습니까? 아니면 비슷한 무엇입니까?이상적으로는 각 키워드를 구분하여 각 태그를 목록과 비교하여 해당 키워드가 모두 여기에 있는지 확인하고 싶습니다.
Select d.field_id_115 as tags,tag.tag_name, title.title, title.entry_id, cat_title.cat_name FROM finn_tagger tag LEFT JOIN finn_tagger_links link
ON tag.tag_id = link.tag_id
LEFT JOIN finn_channel_titles title
ON link.entry_id = title.entry_id
LEFT JOIN finn_category_posts cat
ON title.entry_id = cat.entry_id
LEFT JOIN finn_categories cat_title
ON cat.cat_id = cat_title.cat_id
Left JOIN finn_channel_data d
ON cat.entry_id = d.entry_id
WHERE cat_title.cat_url_title = 'catheter-supplies'
AND tag.tag_name ='male'
AND d.field_id_115 LIKE '%silicone%';
또한, 각 태그는 또한 자신의 분야의 수 있습니다,하지만 난 그것을 확인하기 위해 확인하는 방법을 잘 모르겠어요 :
내가 가지고 올 수 있었던 가장 가까운 뭔가처럼 하나 이상의 태그가있는 경우 두 태그가 모두 포함됩니다.
그래서 entry_id는 각 태그의 선택과 기록을 가지고 있는지 확인해야합니다. 나는 다음과 같이하려고했다 :
SELECT entry_id
FROM (Select title.title, title.entry_id, cat_title.cat_name FROM finn_tagger tag LEFT JOIN finn_tagger_links link
ON tag.tag_id = link.tag_id
LEFT JOIN finn_channel_titles title
ON link.entry_id = title.entry_id
LEFT JOIN finn_category_posts cat
ON title.entry_id = cat.entry_id
LEFT JOIN finn_categories cat_title
ON cat.cat_id = cat_title.cat_id
Left JOIN finn_channel_data d
ON cat.entry_id = d.entry_id
WHERE tag.tag_name IN ('silicone')
AND cat_title.cat_url_title = 'catheter-supplies'
UNION ALL
Select title.title, title.entry_id, cat_title.cat_name FROM finn_tagger tag LEFT JOIN finn_tagger_links link
ON tag.tag_id = link.tag_id
LEFT JOIN finn_channel_titles title
ON link.entry_id = title.entry_id
LEFT JOIN finn_category_posts cat
ON title.entry_id = cat.entry_id
LEFT JOIN finn_categories cat_title
ON cat.cat_id = cat_title.cat_id
Left JOIN finn_channel_data d
ON cat.entry_id = d.entry_id
WHERE tag.tag_name IN ('male')
AND cat_title.cat_url_title = 'catheter-supplies') as e
group by entry_id HAVING COUNT(*) > 1
그러나 그것은 단지 가장 좋은 길로 보이지 않는다. 그리고 그것은 꽤 느리다.
[http://example.com/] (http://php.net/manual/en/function.explode.php) 배열을 통해 쿼리를 생성합니다. – slapyo
나쁜 DB 스키마가있는 것 같습니다. 편집/개선 할 수 있습니까? 아니면 그것을 처리해야합니까? – Uby
나는 그것을 처리해야한다. 그것은 tagger 플러그인으로 expressionengine입니다. – nick