我正在尝试将这个左连接放在一个查询中的三个表中。
我可以一次使用一个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']; ?>
答案 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