Mysql在彼此内部选择多个查询

时间:2015-05-01 10:09:32

标签: php mysql

我在使用之前选择的数据从数据库中选择数据时遇到了一些麻烦。我想做的是。首先,我让mysql从表vechiles中选择我数据库中的所有vechiles。我回应它们并在while循环中我尝试通过选择具有vechile_id的图片从不同的表中为vechile选择图片:

现在我的第一个问题是。这是正确的方法吗?我认为必须有一个更整洁的方式,但我无法找到。

 $sql1 = "SELECT * FROM fotos WHERE voertuig_id =". $row['id'];

Noe以上示例工作正常,但我只想选择第一张图片而不是所有上传的图片。 所以对于这段代码:

 $sql1 = "SELECT TOP 1 * FROM fotos WHERE voertuig_id =". $row['id'];

我添加了

 $sql1 = "SELECT * FROM fotos WHERE voertuig_id =". $row['id'] . "LIMIT 1";

我也试过

<div class="panel panel-info">
    <div class="panel-heading">
        <i class="fa fa-list-ul"></i> Sipariş Listeniz
    </div>
    <div class="panel-body">
        <div id="cart" data-bind="foreach: Currencies">
            <div class="">
                <span data-bind="text: Currency"></span>
                <table class=" table table-striped" data-bind="foreach: Items">
                    <tr>
                        <td data-bind="text: Code"></td>
                        <td data-bind="text: Amount"></td>
                        <td data-bind="text: Price"></td>
                        <td data-bind="text: LineTotal"></td>
                    </tr>
                </table>
            </div>
        </div>
    </div>
    <div class="panel-footer">
    </div>
</div>

但是当我这样做时突然说没有照片。我做错了什么!

感谢所有的帮助!

1 个答案:

答案 0 :(得分:1)

您不需要为每辆车循环并执行另一个查询,您可以通过简单的连接来完成。

select *
  from vehicles v
    left join fotos f
      on f.voertuig_id = v.id;

如果该车辆没有匹配的照片,则返回的数组中将显示空值。

这会将你的php更改为:

$last_vehicle = null;
if ($result->num_rows > 0) {
  while($row = $result->fetch_assoc()) {
    if($row['brand'] != $last_vehicle) {
      if($last_vehicle != null) {
        echo '<div class="info">
                <p class="prijs">Prijs: 1800,- EX BTW</p>
                <p class="msg"> Prijzen onder voorgehoud</p>
              </div>
              <a class="button" href="#">Meer info</a></li>';
       }
       echo '<li><p class="title">'. $row['brand'] .'</p>
             <p class="type">type: 2387</p>
             <p class="ez">ez: 1987</p>';
             $last_vehicle = $row['brand'];                        
      if ($row['url'] != null) {
        echo '<img src="admin/'. $row['url'] .'" atl="tractor 1"/>';
      }
      else {
        echo "there are no pictures";
      }       
    }
  } 
}
else {
  echo "0 results";
}