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