2009年12月3日 星期四

[MySQL] Subqueries with ANY,喜歡A的人也會喜歡...

有一個資料表table, 紀錄使用者(user)喜歡的物品(item),然後在顯示這個物品時,也列出喜歡這個物品的人也會喜歡xxx。

SELECT item FROM table WHERE item != {$this_item} AND user = ANY(SELECT user FROM table WHERE item = {$this_item})
我的做法是,用MySQL的Subquery,先選出這個物品(item)同時也有其他使用者(user)喜歡,然後再用找到的這些使用者去選出他們也喜歡的物品,但是喜歡這個物品的人可能會很多。超過一個時,這個Subquery就會錯,所以要用MySQL的ANY功能。

頭腦不是很清楚,感覺弄的很複雜,不知道有沒有更好的作法。

1 則留言:

shl 提到...

SELECT * FROM info WHERE mid = ANY(SELECT mid FROM manufacturers WHERE provider = xx)

一個provider有好幾個manufacturers, 存在table manufacturers, info table存很多manufacturerid但沒有存providerid