절의 IN WHERE I 항목 속성의 테이블을 가지고 있고,이 같은 구조 user_favorites의 테이블 : MySQL의 - 하위 쿼리 및
- ID (BOOL)
사용자가 항목을 "즐겨 찾기"하면 항목 ID, 사용자 ID를 사용하여이 테이블에 행을 추가하고 즐겨 찾기 속성을 1로 설정합니다 ("unfavorit e "는 0으로 변경됨).
제품 목록을 볼 때 사용자의 즐겨 찾기를 표시하는 방법을 알아 내려고하고 있습니다.
현재 사용자 검색 입력을 기반으로 쿼리를 수행하고 제품 ID 배열을 가져옵니다. 이제 제품 정보 테이블을 만들기 위해 해당 제품들 사이에서 쿼리를 수행하고 싶습니다. 그리고이 항목이 사용자 선호도인지 여부를 포함 시키길 원합니다.
은 이런 식으로 뭔가를 시도했다 : 물론
select i.tid, i.name as name, i.image as image, (SELECT favorite FROM user_favorites WHERE user_id=77) as favorite
FROM items i
left join user_favorites ufav on (ufav.item_id = i.tid)
WHERE i.tid IN (79, 98, 105 . . .)
order by favorite DESC, name ASC
..하지만 내가이 하위 쿼리는 1 개 이상의 행 나는 또한 이런 식으로 뭔가를 시도했습니다
오류를 반환받을 :
select i.tid, i.name as name, i.image as image, ufav.favorite as favorite
FROM items i
left join user_favorites ufav on (ufav.item_id = i.tid)
WHERE i.tid IN (79, 98, 105 . . .) AND ufav.user_id=77
order by favorite DESC, name ASC
. . . 그러나 이것은 (당신이 기대했던대로) 선호되는 항목 만 반환합니다. 모두의 ID 목록에있는 항목을 반환하고 싶지만 어떤 항목이 "즐겨 찾기"되지 않았는지 알고 싶습니다.
하나의 쿼리에서이 작업을 수행 할 수 있습니까? 아니면 두 가지 별도의 쿼리를 실행하는 것이 가장 좋은 방법입니까?
응답을 보내 주셔서 감사합니다. Sashi, John Woo는 정확합니다. 검색 결과에 너무 좋아하지 않는 항목이 필요합니다. – Zarwell