从两个或多个表

时间:2016-10-21 11:22:57

标签: mysql

让我说我有这些变量:

$ post_id = 222;

$ IsLoggIn = 2;

我在五个不同的表中有相同的列“post_id”名称。 我想编写一个sql语句来检查并查看是否有一个列名为“post_id”的行,其值等于变量“$ post_id”并删除该行

注意:除了“public_feed_table”之外,可能没有 post_id 等于变量的行$ post_id“所以sql语句应该在删除之前检查是否有一行。

我想要一个可以完成这项工作的单个sql语句。

我尝试的是下面的内容。请帮忙:

global      $dbc_conn,
            $public_feed_table,
            $images_table,
            $comments_table,
            $rating_table,
            $notification_table,    
            $IsLoggIn;

$sql    =   "DELETE 
                        p,i,c,r,n
                            FROM
                                $public_feed_table p
                                    LEFT JOIN 
                                    $images_table i,
                                    $comments_table c,
                                    $rating_table r,
                                    $notification_table n
                                        ON
                                        i.post_id,
                                        c.post_id,
                                        r.post_id,
                                        n.post_id=p.post_id

                                        WHERE p.post_id='$post_id'
                                        AND p.user_id='$IsLoggIn'

                                        ";
            //query database
            $query  =   mysqli_query($dbc_conn,$sql);

2 个答案:

答案 0 :(得分:1)

你加入Syntax是worng。必须是:

       $sql    =   "DELETE p,i,c,r,n
                        FROM
                        $public_feed_table p
                            LEFT JOIN 
                            $images_table i ON
                             p.post_id = i.post_id

                            LEFT JOIN
                            $comments_table c ON 
                            p.post_id = c.post_id

                            LEFT JOIN
                            $rating_table r ON  
                            p.post_id = r.post_id 

                            LEFT JOIN
                            $notification_table n ON
                            p.post_id=n.post_id

                                WHERE p.post_id='$post_id'
                                AND p.user_id='$IsLoggIn'

                                ";

有关详细信息,请参阅:http://www.w3schools.com/sql/sql_join_left.asp

答案 1 :(得分:0)

您的JOIN语法非常奇怪。它应该是

                        FROM
                            $public_feed_table p
                                LEFT JOIN 
                                $images_table i ON i.col = p.col,
                                LEFT JOIN $comments_table c ON p.col = c.col,

** col例如,将其替换为每个表架构的实际列名