SQL 사용자를위한 추천 제품 찾기SQL을 가진 사용자를위한 추천 제품 찾기
제품 카탈로그가 있습니다. 예를 들어
: 이름 : 제품 1 도시 : 정수 제품 기능 (테이블 도시에서 도시의 아이디) : 정수의 배열 (각 정수 - 테이블 기능의 제품 기능의 ID)Table products:
id name city
1 Product 1 5
Table product_features:
id product_id feature_id
1 1 2
2 1 3
3 1 5
Table features:
id title
2 Mobile
3 Fast
5 External power source
일부 등록 된 사용자 (id = 10)는 웹 사이트에서 검색을 수행합니다. (체크 박스 또는 다른 것을 사용) 사용자 검색
예 : 기능과 도시 5에서 제품 3 (모바일), 5 (외부 전원) 테이블 user_searches에 저장
검색 :
id user_id search_city search_features (string - list of needed features divided by ",")
1 10 5 3,5
2 11 5 2
2 12 7 3,5
2 13 5 5
예 :
나중에 새로운 제품이 catalog.I에 추가
제품 기능은 사용자 검색과 일치하는 경우이 제품 에 대해 통지해야하는 사용자를 찾을 필요예 : 신제품. 나는 'IN'연산자 와 SQL 쿼리를 사용하여 알림을 필요로 사용자의 배열을 얻기 위해 노력했습니다
id user_id search_city search_features
1 10 5 3,5 (should be notified - new product city:5, features:3,5)
2 11 5 2 (shouldn't be notified - user needs only feature #2)
2 12 7 3,5 (shouldn't be notified - user searched in another city)
2 13 5 5 (should be notified - user needs feature #5 - new product has this feature)
:
id name city
2 Product 2(new) 5
product_features:
id product_id feature_id
5 2 3
6 2 5
일부 사용자
이 제품에 대한표 user_searches을 통보해야한다 하지만 사용자가 하나 이상의 기능을 검색 할 때 작업이 해결되지 않습니다.
예 :
IN 363,210product_features user_searched
3,5 3
3, 5가 - 물론 그것은 또한 내가
을 작동하지 않습니다 ....product_features user_searched
3,5,10,20 3,5,7,2
3 , 5, 10, 20 IN 3, 5, 7, 2를 작동 ... 모든 사용자가 다른 테이블 (행당 1 기능 ID)
user_id feature_id
10 3
10 5
11 3
기타 필요에 저장 기능을 시도한
,하지만 같은 잘못된 결과가 있습니다. 저의 다른 모든 아이디어는 이전보다 더 어리석은 것처럼 보입니다.
비슷한 제품을 검색하는 경우 신제품에 대한 알림을 받아야하는 사용자를 필요로합니다 ... 더 간단한 솔루션이 있어야하지만 찾을 수는 없다고 생각합니다.
아이디어가 있습니까?
어떤 DBMS를 사용하고 있습니까? 포스트그레스? 신탁? –
MySQL을 사용하고 있습니다 –
user_searches에 각 사용자 당 하나의 행만 있습니까? 또는 그것의 역사 테이블처럼? –