0

三张桌子

状态 : ID,member_1,member_2 -->

(eg. 12, member_Joseph, member_John ; 
     22, member_Jacob, member_Jarrod ; 
     31, member_Jarrod, member_John 
     11, member_John, member_Jacob)

提交:ID,学生 -->

(eg. 12, Amy ; 
     22, Brian; 
     31 Susan ; 
     11 Kyle) 

info : member_name, 联系方式 -->

(eg. member_Joseph, joseph@name.name; 
     member_Jacob, jacob@name.name ; 
     member_Jarrod, jarrod@name.name ; 
     member_John, john@name.name )

从查询构建的新表:

 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 )

我想制作分配给状态表中每个成员的所有学生的数组,
例如。
array1 --> member_Joseph:学生 1、学生 2、学生 3
array2 --> member_John:学生 2、学生 4、学生 5
array3 -->member_Jacob:学生 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 语法)

4

1 回答 1

0

我认为应该是表info应该被加入两次,这样你就可以获得每个 memberID 的 member_name。您还需要为表提供别名,以便可以唯一标识它们,例如

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

要进一步了解有关联接的更多信息,请访问以下链接:

于 2013-02-20T06:23:34.863 回答