我试图将三个表的这个左连接放在一个查询中。
我可以一次让一个select join语句工作,但是当我想让两个select语句在一个查询中工作时,它就不能很好地工作。
基本上,我希望获得城市和州的名称,而不是I。
无论是城市还是州,它们中只有一个可以成功地给出我的名字,而另一个只会给出id。
我想知道城市和州的名字。我如何才能做到这一点?
<?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']; ?>发布于 2014-08-01 03:16:42
这可能是因为您错误地使用了UNION语句。我猜您想要使用另一个左连接,这样您就有一组来自listing的所有行与state_name相关联(这里的city是来自listing的city列),而另一组来自第二个查询的所有行,同样是state字段是listing表的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.idhttps://stackoverflow.com/questions/25066832
复制相似问题