我对sql查询有疑问。
这里我有3张桌子,
表:elaun
1. elaun_kod (pk)
2. Jenis_elaun
3. peratus_elaun
表2:staff_elaun
1. staff_elaunID (pk)
2. staff_ID (fk)
3. elaun_kod (fk)
表3:人员
1. staff_ID (pk)
因此,在这里,我想从elaun表中选择'jenis_elaun'和'peratus_elaun',其中它们的'jenis_kod'等于staff_elaun表中的'jenis_kod'。然后从staff_elaun表中,我想将staff_ID与staff表中的staff_ID进行比较。
这是我的查询,但没有显示任何内容
$sql1 = mysql_query("
SELECT elaun.*
FROM elaun, staff_elaun, staff
WHERE
elaun.elaun_kod = staff_elaun.elaun_kod
AND staff_elaun.staff_ID = staff.staff_ID
AND staff.staff_ID = '$data[staff_ID]'
");
答案 0 :(得分:0)
您正在描述表之间的一系列联接。每个联接都有一个条件,其中每个表中的行都对应。
在SQL中,它是通过JOIN
子句指定的。
SELECT
elaun.*
FROM elaun
INNER JOIN staff_elaun USING (elaun_kod)
INNER JOIN staff USING (staff_ID)
然后,使用WHERE
子句应用限制。
SELECT
elaun.*
FROM elaun
INNER JOIN staff_elaun USING (elaun_kod)
INNER JOIN staff USING (staff_ID)
WHERE
staff.staff_ID = '… the ID value you want here …'
当然,您不应直接将值注入查询中;而是使用查询参数。参见How can I prevent SQL injection in PHP?