首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lost with mySQL内部联接查询

lost with mySQL内部联接查询
EN

Stack Overflow用户
提问于 2012-02-20 18:35:26
回答 2查看 124关注 0票数 0

好的,我有一个我正在处理的查询。这在一定程度上是有效的,但仍然没有得到我想要的确切结果。

代码语言:javascript
复制
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>?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-20 19:05:13

你在找21岁的朋友,对吧?使用这个:(未测试)

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2012-02-20 19:24:10

在等待答案的同时继续玩弄它之后,我真的想到了

代码语言:javascript
复制
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,如上面的原始查询所示。这将使我获得我拥有的所有连接,并产生我目前从原始问题中需要的所有信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9359692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档