在创建这个主题之前,我研究了整个社区,但我没有找到任何接近我想要做的事情。我正在开发一个小型社交网络,它是一个仅用于学术目的的 PHP 项目。
我的数据库中有以下表格:
Table Name: users
Columns:
id => INT (Primary Key - AutoIncrement)
name => VARCHAR(200)
birthdate => DATE
login => VARCHAR(60)
password => VARCHAR(60)
Table Name: friends
Columns:
id => INT (Primary Key - AutoIncrement)
idRequester => INT (Foreign Key - users>>id)
requestDate => DATE
idRequested => INT (Foreign Key - users>>id)
confirmationDate => DATE
situation => CHAR(1) (A=Accepted | P=Waiting | R=Rejected)
通过以下查询,我可以获得当天所有的生日(不考虑友谊)。
SELECT id, name, DATE_FORMAT(birthdate, '%d/%m/%Y') AS dtbirth,
TIMESTAMPDIFF(YEAR, birthdate, NOW()) AS age
FROM users WHERE birthdate LIKE '%-06-21';
这类似于在葡萄牙论坛的另一个主题中提出的问题,在这个链接中:这里
我需要获取所有今天或在给定当前日期的未来 7 天内过生日的朋友,这来自特定用户 X。我不知道如何加入表用户和朋友,因为我们有两列,如果 X 是请求用户,然后我需要加入请求的用户,否则请求 X,然后我加入请求者。
也就是说,获取今天或未来 7 天内所有“用户 ID 50”的朋友。
如果有人可以帮助我,因为我不确定如何执行查询来解决这个问题并提高性能。我相信它会帮助很多人,因为怀疑是经常发生的事情并且出于学术目的。谢谢你。