单个mysqli查询中的多个选择连接联合

时间:2014-07-31 18:56:35

标签: php select join mysqli union

我正在尝试将这个左连接放在一个查询中的三个表中。

我可以一次使用一个select join语句,但是当我想在查询中使用两个select语句时,它不能正常工作。

基本上,我想得到城市和州的名称,而不是ids。

无论是城市还是任何一个州,只有其中一个可以工作并成功地给我名字,但另一个只会给出身份。

我正在试图得到城市和州的名字。我怎么能做到这一点?

         <?php  
          if($state > 0 && $city  > 0 && $area < 1 ){

       $sqla= "(SELECT listing.*, state.state_name as state FROM listing LEFT JOIN state ON listing.state = state.id) UNION (SELECT listing.*, city.city_name as city FROM listing LEFT JOIN city ON listing.city = city.id)";

          $sql=mysqli_query($con,$sqla);  


            if (mysqli_num_rows($sql) > 0) {
             while($row = mysqli_fetch_array($sql)){ ?>
          <?php echo $row['id']; ?>
       <?php echo $row['state']; ?>
       <?php echo $row['city']; ?>

1 个答案:

答案 0 :(得分:0)

这可能是因为您错误地使用了UNION语句。我想你想要使用另一个左连接,这样你就可以从列表中找到一组所有行与state_name相关联(这里的city是列表中的city列)和另一组来自第二个查询列表的所有行,同样是state field是列表中的州列。你应该这样做:

 SELECT listing.*, state.state_name, city.city_name FROM listing LEFT JOIN state ON listing.state = state.id LEFT JOIN city ON listing.city = city.id