SQL查询与3张表比较

时间:2019-03-14 01:47:45

标签: mysql sql

我对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]'
    ");

1 个答案:

答案 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?