Php mysql多个内部联接将两个表列添加到另一个表中

Php mysql多个内部联接将两个表列添加到另一个表中,php,mysql,drupal,select,inner-join,Php,Mysql,Drupal,Select,Inner Join,三张表 状态:ID、成员1、成员2--> 提交:ID,学生--> 信息:会员姓名,联系方式--> 要从查询生成的新表: member_Joseph, joseph@name.name, Amy; member_Jacob, jacob@name.name, Kyle ; member_Jarrod, jarrod@name.name, Brian, Susan ; member_John, john@name.name, Amy, Susan, Kyle ) 我想把分配给状态表中

三张表 状态:ID、成员1、成员2-->

提交:ID,学生-->

信息:会员姓名,联系方式-->

要从查询生成的新表:

 member_Joseph, joseph@name.name, Amy; 
 member_Jacob, jacob@name.name, Kyle ; 
 member_Jarrod, jarrod@name.name, Brian, Susan ; 
 member_John, john@name.name, Amy, Susan, Kyle )
我想把分配给状态表中每个成员的所有学生都列成一个数组
例如,
阵列1-->成员:学生1、学生2、学生3
阵列2-->成员约翰:学生2、学生4、学生5
阵列3-->成员:学生3、学生5、学生1

那将是:

$query = db_query("
    SELECT info.member_name, submit.student  
    FROM {info} 
    INNER JOIN {status} 
    ON info.member_name = status.member_1
    INNER JOIN {status}
    ON info.member_name = status.member_2
    INNER JOIN {submit}
    ON submit.id = status.id
");
while($result = db_fetch_array($query)){
echo $result['student']; //iterate through members and print students for each
}
错误为:“非唯一表/别名”
(仅供参考:我使用的是Drupal 6语法)

我认为应该将表
info
连接两次,以便获得每个memberID的成员名称。您还需要为表提供别名,以便能够唯一地标识它们,例如

SELECT  a.*, 
        b.member_name memberName1,
        c.member_name memberName2,
        // other columns you might want to show
FROM    status a        
        INNER JOIN info b
            ON a.member_1 = b.member_name
        INNER JOIN info c
            ON a.member_2 = c.member_name
        INNER JOIN submit d
            ON a.ID = d.ID
要进一步了解加入的更多信息,请访问以下链接:


我在想,
{status}
两次解析到同一个别名,导致了错误。问题是,我需要两次查看status以获得第一个和第二个成员assignedic的名称,直到现在我还不知道别名是什么。thanksi试图澄清ID只是表示提交#,member_1和member_2是包含分配给查看提交的成员的列。谢谢你的链接@英格丽,你有什么问题
:D
或者查询对你有帮助吗?@ingrid你能添加样本记录和你想要得到的结果吗
:D
,这样我们就可以计算出来了。所以我做了这个。对表进行重新构造可能是有意义的,这样我就有了一个以成员名称作为列的表,然后从上到下填写学生。那我就不需要这么做了。但这没有意义,因为行是不相关的
 member_Joseph, joseph@name.name, Amy; 
 member_Jacob, jacob@name.name, Kyle ; 
 member_Jarrod, jarrod@name.name, Brian, Susan ; 
 member_John, john@name.name, Amy, Susan, Kyle )
$query = db_query("
    SELECT info.member_name, submit.student  
    FROM {info} 
    INNER JOIN {status} 
    ON info.member_name = status.member_1
    INNER JOIN {status}
    ON info.member_name = status.member_2
    INNER JOIN {submit}
    ON submit.id = status.id
");
while($result = db_fetch_array($query)){
echo $result['student']; //iterate through members and print students for each
}
SELECT  a.*, 
        b.member_name memberName1,
        c.member_name memberName2,
        // other columns you might want to show
FROM    status a        
        INNER JOIN info b
            ON a.member_1 = b.member_name
        INNER JOIN info c
            ON a.member_2 = c.member_name
        INNER JOIN submit d
            ON a.ID = d.ID