在我的数据库中,有一个表(喜欢)列出了用户喜欢的项目。
访问用户个人资料时,我需要确定我们共有多少个“喜欢”。
编写显示用户之间相互喜欢的查询的最佳方式是什么?


likes table

 id  |  user  |  item  | activated
-----------------------------------
 1   |  3     |  14    | 1
 2   |  4     |  14    | 1



在此示例中,我需要返回14。

最佳答案

假设应该是这样的:

select userViewer.item, items.itemName
from likes userViewer,
     likes userProfile,
     items
where userProfile.user = $profileUserId
  and userViewer.user = $userViewer
  and userProfile.item = userViewer.item
  and items.item = userViewer.item


其中$ profileUserId-概要文件用户的userId和$ userViewer-当前用户的userId

例如,对带有“ items”表的“ join on”形式的相同查询:

select userViewer.item, items.itemName
from likes userViewer inner join likes userProfile
on userProfile.user = $profileUserId
  and userViewer.user = $userViewer
  and userProfile.item = userViewer.item
inner join items
on userViewer.item = items.item

关于php - 分析表以了解用户之间的相互喜欢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19890757/

10-12 16:26