Php 单个mysqli查询中的多个select-join联合
我试图将三个表的左连接放在一个查询中 我可以一次让一个select join语句工作,但是当我想让两个select语句在一个查询中工作时,它不能很好地工作 基本上,我想要的是城市和州的名字,而不是身份证 无论是城市还是州,只有一个会成功地给我名字,而另一个只会给我id 我想知道城市和州的名字。我怎样才能做到这一点Php 单个mysqli查询中的多个select-join联合,php,select,join,mysqli,union,Php,Select,Join,Mysqli,Union,我试图将三个表的左连接放在一个查询中 我可以一次让一个select join语句工作,但是当我想让两个select语句在一个查询中工作时,它不能很好地工作 基本上,我想要的是城市和州的名字,而不是身份证 无论是城市还是州,只有一个会成功地给我名字,而另一个只会给我id 我想知道城市和州的名字。我怎样才能做到这一点 <?php if($state > 0 && $city > 0 && $area <
<?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']; ?>
这可能是因为您错误地使用了UNION语句。我猜您想使用另一个左连接,这样您就有了一组来自列表的所有行与state_name关联(这里的city是列表中的city列),以及另一组来自第二个查询的列表中的所有行,同样,state字段是列表表中的state列。你应该这样做:
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