繁体   English   中英

带连接的SQL查询仅显示一个结果

[英]SQL query with join shows only one result

我有sql查询,该查询应显示表swt_modules中的所有记录,但仅显示第一行。

$query1 = mysql_query ("SELECT swt_modules.id, swt_modules.name, swt_exam_regs.name AS exam_regs
                        FROM `swt_modules`
                        JOIN `swt_exam_regs`
                        USING ( `id` )
                        WHERE swt_exam_regs.id = swt_modules.exam_regulation
                        ORDER BY swt_modules.name DESC , swt_modules.id DESC
                        LIMIT " . $limit . "");
while ($fetch1 = mysql_fetch_array ($query1))
{
...
}

我在此表(swt_modules)中有3行,并且每行中“ exam_regulation”字段的值都是1。在表swt_exam_regs中,我只有1行和2列-id和name。 Swt_modules.id存储ID号。 我应该使用哪个联接才能查看所有记录?

加入后的结果swt_modules表中的记录

您需要使用LEFT JOIN而不是INNER JOIN 如下更改查询。 请注意,由于您尝试获取所有行,因此我删除了LIMIT

SELECT swt_modules.id, swt_modules.name, swt_exam_regs.name AS exam_regs
                    FROM `swt_modules`
                    LEFT JOIN `swt_exam_regs`
                    ON swt_exam_regs.id = swt_modules.exam_regulation
                    ORDER BY swt_modules.name DESC , swt_modules.id DESC

我也建议使用mysqli或pdo代替现在不推荐使用的mysql。

$query1 = mysql_query ("
    SELECT 
        swt_modules.id, 
        swt_modules.name, 
        swt_exam_regs.name AS exam_regs
    FROM swt_modules
    LEFT JOIN swt_exam_regs on swt_exam_regs.id = swt_modules.exam_regulation
    ORDER BY 
        swt_modules.name DESC, 
        swt_modules.id DESC
    LIMIT $limit");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM