0

3つのテーブル

ステータス: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) 

情報: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
}

エラーは次のとおりです:「一意のテーブル/エイリアスではありません」

(fyi:Drupal 6構文を使用しています)

4

1 に答える 1

0

info各メンバーIDのmember_nameを取得できるように、テーブルを2回結合する必要があると思います。テーブルを一意に識別できるように、テーブルのエイリアスを指定する必要もあります。

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 に答える