好的,我正在玩这个查询。这是有道理的,但仍然没有得到我想要的确切结果。
SELECT DISTINCT b.friendID, b.isactive, c.*
FROM memb_baseInfo a INNER JOIN memb_friends b ON
a.mID = b.mID
INNER JOIN memb_baseInfo c ON
b.friendID = c.mID
WHERE b.`isactive` = 0 OR b.`isactive` = 1
AND a.mID = '21'
$ mid是动态变量。
我想要做的是在表memb_friends上找到与动态$ mid匹配的mID或friendID。从那里获取另一个表的信息。 memb_baseInfo。其中mID是各种外键。两个表都有mID作为匹配变量。但是在memb_friends中,对于memb_baseInfo表,expertID和mID基本上是一个。我的虚拟数据基本上是我的mID和5个假的数据,其中2个与我目前无关,还有3个与我建立了友谊。我的问题是这只是收集我的mID(21)有friendID的信息,但是如果有人和我结识并且数字是朋友表中的mID那么我就不知道那里的信息。我一直试图弄清楚如何做到这两点,但我失败了。希望我有道理,任何人都可以提供帮助>?
答案 0 :(得分:1)
你找21岁的朋友,对吧?使用此:(未测试)
SELECT DISTINCT a.*
FROM memb_baseInfo a
WHERE a.mID IN (
SELECT b.friendID FROM memb_baseInfo a INNER JOIN memb_friends b ON a.mID = b.mID
WHERE (b.`isactive` = 0 OR b.`isactive` = 1)
AND a.mID = '21')
答案 1 :(得分:0)
在等待回答的同时继续玩它之后我实际想出了
SELECT * FROM memb_friends a
INNER JOIN memb_baseInfo b ON a.friendID = b.mID OR a.mID = b.mID
WHERE a.isactive = 1 AND b.mID NOT IN(".$mid.") AND (a.mID = '".$mid."' OR a.friendID = '".$mid."')
其中$ mid将在上面的原始查询中给出21。这将获得我所有的连接,并从我原来的问题中得到我目前需要的所有信息。