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

时间:2014-05-29 16:53:52

标签: php mysql sql

我有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号。我应该使用哪种连接来查看所有记录?

result after join records in swt_modules table

2 个答案:

答案 0 :(得分:1)

您需要使用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

答案 1 :(得分:1)

我还建议使用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");