【问题标题】:Numerous WHERE conditions mysql众多WHERE条件mysql
【发布时间】:2012-06-02 00:09:33
【问题描述】:

我有以下代码可以执行我想要的操作。但是,我需要第二个条件,其中表项目中接受的列等于是。我不知道如何将它作为用户表的位置输入到我当前的连接中。

$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" ;

【问题讨论】:

    标签: mysql join where


    【解决方案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" ;
    

    【讨论】:

      【解决方案2】:
      WHERE u2.Username = ".$_SESSION['MM_Username']."  AND p2.Accepted = 'yes'
      

      或者你可以使用

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

      第二种选择可能更快,但取决于其他事情

      【讨论】:

        【解决方案3】:

        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" ;
        

        【讨论】:

          【解决方案4】:

          在 where 子句中添加 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" ;
          

          【讨论】:

            猜你喜欢
            • 2015-06-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-11-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多