繁体   English   中英

MySQL左连接查询

[英]MySQL left join query

我的数据库中有一个关系表,又有四个值。

id, int, primary, auto-incriment 
mem1, int
mem2, int
type, enum('a','b')

我还有另一个具有成员ID,用户名,名字和姓氏的表

我想单击一个按钮,以获取两个人之间没有重复的关系。 这是我到目前为止的查询...

SELECT 
    myMembers.id AS id, 
    myMembers.username AS username, 
    myMembers.firstname AS firstname,
    myMembers.lastname AS lastname 
FROM myMembers 
INNER JOIN memberRelations 
    ON memberRelations.mem2=myMembers.id
WHERE memberRelations.mem1='$id' OR memberRelations.mem2='$id' ORDER BY myMembers.username 
ASC

这里的问题是,在某些用户上它给我正确的值,但在其他用户上它给我个人资料用户,而不是其他成员关系。 我怀疑这与查询的ON部分有关,但实际上我迷路了! 有没有更好的方法可以实现我的目标? 还是我可以更正查询中的某些内容? 任何帮助将不胜感激。 谢谢!

根据您的问题,我认为您需要以下内容来选择关系的两个成员:

SELECT
    R.type,
    M1.id AS id1, 
    M1.username AS username1, 
    M1.firstname AS firstname1,
    M1.lastname AS lastname1,
    M2.id AS id1, 
    M2.username AS username2, 
    M2.firstname AS firstname2,
    M2.lastname AS lastname2
FROM memberRelations AS R
       INNER JOIN myMembers AS M1 ON R.mem1=M1.id
       INNER JOIN myMembers AS M2 ON R.mem2=M2.id
WHERE R.mem1='$id' OR R.mem2='$id'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM