Php 选择具有内部联接的id

Php 选择具有内部联接的id,php,mysql,sql,inner-join,Php,Mysql,Sql,Inner Join,我试图构建一个用户配置文件,所以我从数据库中显示了她喜欢的所有内容。 但是我想看看拥有活动会话的用户是否喜欢某些用户配置文件 因此,表名为loves,结构为: photo_id (int) nick (varchar) date (timestamp) 照片表结构: photo_id (int) path (varchar) title (varchar) category (varchar) nick (varchar) date (timest

我试图构建一个用户配置文件,所以我从数据库中显示了她喜欢的所有内容。 但是我想看看拥有活动会话的用户是否喜欢某些用户配置文件

因此,表名为loves,结构为:

photo_id (int)
nick     (varchar)
date     (timestamp)
照片表结构:

photo_id (int)
path     (varchar)
title    (varchar)
category (varchar)
nick     (varchar)
date     (timestamp)
这是我如何进行查询的:

SELECT photos.photo_id
FROM photos
INNER JOIN loves ON loves.nick = 'userProfileName'
WHERE loves.nick =  'userWithActiveSession'
AND photos.photo_id = loves.photo_id
ORDER BY loves.photo_id DESC 
LIMIT 100
此查询应返回具有活动会话的用户喜欢的所有照片ID,以及来自配置文件请求用户的喜欢的照片

示例

loves table:

nick         photo_id
userProfile  26  
userProfile  1000  
userProfile  27
userProfile  520
userSession  26  
userSession  680  
userSession  1000
因此,查询应该只返回两个photo_id(1000和26),因为两个用户都喜欢相同的photo_id


有没有办法修改此代码以实现我的愿望?

这部分看起来很奇怪:

INNER JOIN loves ON loves.nick = 'userProfileName'
不是吗(假设照片表上有一个刻痕字段):


或者我没有在这里得到什么?

你可以像这样在没有加入的情况下获得照片id:

  SELECT   photo_id
  FROM     loves
  WHERE    photo_id in (select photo_id from loves where nick = "userProfile" )
  AND      photo_id in (select photo_id from loves where nick = "userSession" )
  GROUP BY photo_id
  ORDER BY loves.photo_id DESC 
  LIMIT    100

那么你想要X所有的照片(photos.nick=X)和Y喜欢的照片

SELECT photos.photo_id FROM photos INNER JOIN loves
ON loves.photo_id = photos.photo_id 
WHERE loves.nick = Y AND photos.nick = X
ORDER BY photos.photo_id DESC LIMIT 100

如果您想要X和Y都喜欢的照片,那么您需要将loves连接到它自己,将表的两个副本中的照片ID相互匹配,并调节一个表的nick匹配X,另一个匹配Y。(参见注释)

照片的表结构是什么??您想让照片的照片id都是喜欢的还是其中一张喜欢的照片的id?抱歉,请查看编辑后的帖子。当具有活动会话的用户喜欢某些“喜欢”时,只有照片表中的照片id从用户档案中,如果可以的话,请提供一些表格中的示例数据和所需结果。编辑您的问题并添加它们我正在尝试从用户配置文件中获取“喜欢”,然后查看喜欢与登录的用户喜欢是否匹配!两个用户='userProfile'和'userSession'。“userProfile”用户有4个喜好:(photo_id 26、photo_id 250、photo_id 580、photo_id 1000)。“userSession”用户有3个喜好;(photo_id 26,photo_id 27,photo_id 1000)因此查询应该返回id的26和1000相同的样本数据。制作一些表格的数据并将其添加到问题中,进行编辑,然后再次查看帖子。不,当用户Y喜欢与用户XY相同的照片id时,我想获取照片id。您想查找X和Y都喜欢的照片id吗?然后你必须加入爱本身<代码>选择“a.photo\u id FROM loves”\u a internal JOIN loves\u b ON\u a.photo\u id=\u b.photo\u id其中_a.nick=X和_b.nick=Y
SELECT photos.photo_id FROM photos INNER JOIN loves
ON loves.photo_id = photos.photo_id 
WHERE loves.nick = Y AND photos.nick = X
ORDER BY photos.photo_id DESC LIMIT 100