好的,我有一个我正在处理的查询。这在一定程度上是有效的,但仍然没有得到我想要的确切结果。
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或friendID匹配的$mid。从另一个表中获取信息。memb_baseInfo。其中mID是各种类型的外键。两个表都使用mID作为匹配变量。但在memb_friends中,就memb_baseInfo表而言,friendID和mID本质上是同一个表。我的虚拟数据基本上是我的mID和5个假的,其中2个目前与我无关,3个已经和我交了朋友。我的问题是,这只是在我的mID (21)有friendID的地方收集信息,但是如果有人加我为好友,并且朋友表中的号码是mID,那么我就无法获得那里的信息。我一直在试图弄清楚如何做到这两种方式,但我失败了。希望我说的有道理,有没有人能help>?
发布于 2012-02-20 19:05:13
你在找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')发布于 2012-02-20 19:24:10
在等待答案的同时继续玩弄它之后,我真的想到了
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,如上面的原始查询所示。这将使我获得我拥有的所有连接,并产生我目前从原始问题中需要的所有信息。
https://stackoverflow.com/questions/9359692
复制相似问题