0

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

likes table

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


在这个例子中 我需要返回14 。

4

2 回答 2

1

I wants to know why you have not used matching caondition in where clause

SELECT 
    userViewer.item, items.itemName
  FROM 
     likes AS userViewer 
  INNER JOIN 
    likes as userProfile 
  ON 
    userProfile.item = userViewer.item
  INNER JOIN items 
  ON
    userViewer.item = items.item
  WHERE
    userViewer.user = $userViewer
    AND
    userProfile.user = $profileUserId
于 2013-11-10T16:35:21.587 回答
1

假设应该是这样的:

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
于 2013-11-10T14:23:52.440 回答