JOIN两个表返回值,但是当我使用LEFT JOIN时,它将返回语法错误

时间:2015-11-22 01:49:49

标签: mysql sql-server join

我尝试LEFT JOIN我的查询,但它返回了错误,如此

  

查询无效:您的SQL语法出错;查看与MariaDB服务器版本对应的手册,以便在

附近使用正确的语法
WHERE `data_binatang`.`id_binatang` = `data_waktu_vaksinasi`.`id_binatang`'
     

第1行

但是当我只写JOIN时,它返回了json值

这是我的代码:

  <?php
    include "../mainmenu/koneksi.php";

    $rows = array();

    $query = "SELECT `data_binatang`.`nama_binatang`, (SELECT min(`data_waktu_vaksinasi`.`tanggal_vaksin`) FROM `data_waktu_vaksinasi` WHERE `data_binatang`.`id_binatang` = `data_waktu_vaksinasi`.`id_binatang`) AS tanggal_awal FROM `data_binatang` JOIN `data_waktu_vaksinasi` WHERE `data_binatang`.`id_binatang` = `data_waktu_vaksinasi`.`id_binatang`";

    $query = iconv("UTF-8","UTF-8//IGNORE",$query);

    $result = mysql_query($query);

    if (!$result) 
    {   
        die('Invalid query: ' . mysql_error());
    }

    while($row = mysql_fetch_assoc($result))
    {
        $rows[] = $row;

    }   


    echo '{"data_vaksinasi_menu":'.json_encode($rows).'}';
    mysql_close($connection);
?>

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

在加入后将where转换为on

JOIN `data_waktu_vaksinasi` on `data_binatang`.`id_binatang` = `data_waktu_vaksinasi`.`id_binatang`";

答案 1 :(得分:0)

在SQL JOIN中,您应使用JOIN而不是ON子句指定WHERE条件。

MySQL允许您在执行ON时跳过JOIN条件,但是,在执行ON时,它不允许您跳过LEFT JOIN

试试这个:

SELECT `data_binatang`.`nama_binatang`,
       (SELECT min(`data_waktu_vaksinasi`.`tanggal_vaksin`)
          FROM `data_waktu_vaksinasi`
         WHERE `data_binatang`.`id_binatang` = `data_waktu_vaksinasi`.`id_binatang`) AS tanggal_awal 
  FROM `data_binatang`
  LEFT JOIN `data_waktu_vaksinasi`
    ON `data_binatang`.`id_binatang` = `data_waktu_vaksinasi`.`id_binatang`