Bir sonucu olarak iki tablo (link yoluyla), birden fazla satır verebilir birini, araya katılmadan

1 Cevap php

Ben araba markaları veya modelleri listeleyen bir tablo var diyelim:

Cars:

Id | Brand
-----------
1  | BMW
2  | Audi
3  | Volvo

And I've also got another table which links features.
Link:

Id | carid | featureid
-----------------------
1  | 1     | 1
2  | 1     | 2
3  | 2     | 2
4  | 3     | 1
5  | 3     | 2
6  | 3     | 3

And I've got the table listing the features.
Features:

Id | Feature
-----------
1  | A / C
2  | 4WD
3  | Isıtmalı koltuklar

Bu gibi benim ön sayfasında bu sonuçları listelemek istiyorum:

BMW

  • A / C
  • 4WD

Audi

  • 4WD

Volvo

  • A / C
  • 4WD
  • Isıtmalı koltuklar

(PHP ve MySQL kullanarak) Bunu yapmanın en iyi / en etkili yolu nedir?


Edit: I think I'm going to redesign my Cars database to look like this instead:

Id | Brand   | Feature
----------------------
1  | BMW     | 1,2
2  | Audi    | 1
3  | Volvo   | 1,2,3
4  | Citröen | 

Ve sonra Features önceden almak ve PHP birleştirir. Ben çok daha kolay sanırım, ve ben bir özelliği olmayan bir marka varsa ben bir sorun alamadım.

1 Cevap

SELECT Cars.Brand As Brand, Features.Feature as Feature FROM Cars, Link, Features WHERE Cars.id = Link.carid AND Features.id = Link.featureid Order By Brand

Bu sorgu olmalı, sonra mysql_fetch_array kullanın ve sonuçlarını yazdırmak

<?php
  $result=mysql_query($query);
  $last='';
  while($row = mysql_fetch_array($result)){
     if($row['brand']!=$last) {
             //if the previous brand is the same don't print it out
             //otherwise save the new brand and print it out
             $last=$row['brand'];
             echo "<b>".$row['brand']."</b><br>";
             }
     echo $row['Feature'] . "<br>";    
  }
?>