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