0
사람들이 웹 상점에서 주문한 항목을 포함하는 order_items (idorder, iditem, amount) MySQL 테이블이 있다고 가정 해 봅니다. 비슷한 금액의 유사 주문을 가진 다른 주문을 찾음으로써 주문 X와 유사한 주문을 찾고 싶습니다.목록 간의 중복을 찾는 효율적인 SQL 쿼리
SELECT SQL_CALC_FOUND_ROWS
SUM(GREATEST(1, LEAST(cown.amount, cother.amount))) hits,
cother.`idorder`
FROM order_items cown
LEFT JOIN order_items cother ON (
cother.`idorder` != 1
AND cown.iditem = cother.iditem
)
WHERE cown.`idorder` = 1 AND cother.idorder IS NOT NULL
GROUP BY cother.idorder ASC
ORDER BY hits DESC
이 주어진 순서에서 모든 항목을 선택하고 왼쪽 다른 주문에서 항목을 결합 :
여기에 내 현재의 접근 방식입니다. 그런 다음 다른 주문 ID별로 그룹화하고 둘 사이의 겹침 정도를 요약합니다.
더 효율적인 방법이 있습니까?
이것은 재미있어 보이지만 내 목적에 과도한 부담이 될 수 있습니다. 나는 또한 이것을 PHP에서 실행해야 할 것이다. – Nils
그러면 도움이 될 것입니다 : http://api.shephertz.com/cloudapidocs/guide/0.8.1.1/php/recommendation_api.html – Kris