2012-07-19 326 views
0

我有一个关系表在我的数据库有AKA四个值...MySQL的左连接查询

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部分有关,但如实地说我迷路了!有没有更好的方法来实现我的目标?或者我可以纠正我的查询中的某些内容吗?任何帮助将不胜感激。谢谢!

回答

1

根据你的问题,我想你想它选择的关系的成员如下:

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'