1

私が望むことを実行する次のコードがあります。ただし、テーブルプロジェクトの列Acceptedがyesに等しい条件が必要です。ユーザーテーブルの場所として、これを現在の結合に入力する方法がわかりません。

$query_Name = "SELECT u.Student_Surname, u.Student_Forename, Project_Title, Project_id
FROM users u
INNER JOIN projects p2 ON u.id = p2.Project_Lecturer
INNER JOIN project_course pc ON p2.Project_id = pc.Proj_id
INNER JOIN courses c ON pc.Cour_id = c.Course_id
INNER JOIN users u2 ON c.Code = u2.Course
WHERE u2.Username = ".$_SESSION['MM_Username']." 
ORDER BY Project_id ASC" ;
4

4 に答える 4

1
$query_Name = "SELECT u.Student_Surname, u.Student_Forename, Project_Title, Project_id  
 FROM users u
 INNER JOIN projects p2 ON u.id = p2.Project_Lecturer
 INNER JOIN project_course pc ON p2.Project_id = pc.Proj_id
 INNER JOIN courses c ON pc.Cour_id = c.Course_id
 INNER JOIN users u2 ON c.Code = u2.Course
 WHERE u2.Username = ".$_SESSION['MM_Username']." AND p2.Accepted = 'yes'
 ORDER BY Project_id ASC" ;
于 2012-05-27T00:48:41.343 に答える
1
WHERE u2.Username = ".$_SESSION['MM_Username']."  AND p2.Accepted = 'yes'

または、使用できます

INNER JOIN projects p2 ON u.id = p2.Project_Lecturer AND p2.Accepted = 'yes'

2番目の選択肢はより高速になる可能性がありますが、他のものに依存します

于 2012-05-27T00:51:49.240 に答える
0

ANDwhere句に演算子を追加します。

$query_Name = "SELECT u.Student_Surname, 
                      u.Student_Forename, 
                      Project_Title, 
                      Project_id  
               FROM users u INNER JOIN projects p2 
                       ON u.id = p2.Project_Lecturer
                    INNER JOIN project_course pc 
                       ON p2.Project_id = pc.Proj_id
                    INNER JOIN courses c 
                       ON pc.Cour_id = c.Course_id
                    INNER JOIN users u2 ON c.Code = u2.Course
               WHERE u2.Username = ".$_SESSION['MM_Username']." 
                     AND p2.Accepted = 'yes'
               ORDER BY Project_id ASC" ;
于 2012-05-27T02:25:25.120 に答える
0

WHERE は実際には結合されたすべてのテーブル用であるため、WHERE 句で使用しているテーブルを明示的に指定します。そうしないと、あいまいな場合にクエリが機能しません。

したがって、次を使用します。

WHERE
u2.Username = ".$_SESSION['MM_Username']." -- this is for the u2 table
AND
p2.Accepted = 'yes' -- this is for p2 table

AND を使用して、ここにさらにロジックを追加します。したがって、クエリ全体は次のようになります。

$query_Name = "SELECT u.Student_Surname, u.Student_Forename, Project_Title, Project_id  
 FROM users u
 INNER JOIN projects p2 ON u.id = p2.Project_Lecturer
 INNER JOIN project_course pc ON p2.Project_id = pc.Proj_id
 INNER JOIN courses c ON pc.Cour_id = c.Course_id
 INNER JOIN users u2 ON c.Code = u2.Course
 WHERE u2.Username = ".$_SESSION['MM_Username']." AND p2.Accepted = 'yes'
 ORDER BY Project_id ASC" ;
于 2012-05-27T01:05:22.240 に答える