[英]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号。 我应该使用哪个联接才能查看所有记录?
您需要使用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.