0
假設我有一個MySQL表order_items(idorder,iditem,amount),其中包含人們從網上商店訂購的項目。我想通過查找類似數量的類似項目的其他訂單來查找類似於訂單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