复杂选择的MySql查询
我有这些桌子: 用户,一个表包含以下用户:复杂选择的MySql查询,mysql,sql,Mysql,Sql,我有这些桌子: 用户,一个表包含以下用户: +-------------------------- | ID | Name | +-------------------------- 狗,一个包含狗的表格(上次更改是一个时间戳,告知此狗状态上次更改的时间): 用户与狗的关系,一个描述哪只狗属于哪个用户的表,其中多只狗可以属于一个用户,多个用户可以拥有同一只狗,多只狗可以属于多个用户。(简而言之,任何用户都可以与任何狗相关): 用户\朋友\关系,一个表描述了哪个用户是
+--------------------------
| ID | Name |
+--------------------------
狗,一个包含狗的表格(上次更改是一个时间戳,告知此狗状态上次更改的时间):
用户与狗的关系,一个描述哪只狗属于哪个用户的表,其中多只狗可以属于一个用户,多个用户可以拥有同一只狗,多只狗可以属于多个用户。(简而言之,任何用户都可以与任何狗相关):
用户\朋友\关系,一个表描述了哪个用户是哪个用户的朋友:
+------------------------------------
| UserID1 | UserID2 |
+------------------------------------
我想做的是告诉Steve(其中一个用户),他的朋友们拥有的所有狗的名字(由Last_在给定时间戳上更改了)
例如,给定时间为11:23:00的Steve将查询Steve朋友按时间戳订购的所有狗,并且仅在11:23:00以下。
哦,我不希望狗出现两次。有人能给我一些线索吗?你必须在正确的列上连接所有表
到Users
获取Steve的朋友Users\u-Friend\u-Relation
到Users\u Dogs\u Relations
获取*Steve*s friends的狗Users\u Friend\u Relations
到狗
获取这些狗的名字用户与狗的关系
where
条件
SELECT DISTINCT d.Name
FROM Users u1
JOIN Users_Friend_Relation f ON u1.ID = f.User1ID
JOIN Users_Dogs_Relations udr ON udr.UserID = f.User2ID
JOIN Dogs d ON udr.DogID = d.ID
WHERE u1.Name = Steve
AND d.Last_Changed_At < '11:23:00'
选择不同的d.名称
来自用户u1
在u1.ID=f.User1ID上加入用户\朋友\关系f
在udr.UserID=f.User2ID上加入用户\u狗\u关系udr
在udr上加入狗d。狗ID=d.ID
其中u1.Name=Steve
d.最后一次更改时间为<'11:23:00'
您能提供样本记录吗?
+------------------------------------
| UserID1 | UserID2 |
+------------------------------------
SELECT DISTINCT d.Name
FROM Users u1
JOIN Users_Friend_Relation f ON u1.ID = f.User1ID
JOIN Users_Dogs_Relations udr ON udr.UserID = f.User2ID
JOIN Dogs d ON udr.DogID = d.ID
WHERE u1.Name = Steve
AND d.Last_Changed_At < '11:23:00'