2012-03-15 3 views
1

Я пытался объединить 4 таблицы, чтобы я мог извлекать данные из каждого и отображать их в таблице на моей веб-странице.Присоединиться к 4 таблицам и получить данные

Я возился с командой JOIN, но я не могу ничего отобразить.

Моя схема таблицы является:

fuelrecords 

FR_ID (Auto increment) 
VEH_LIST_REG 
FR_WE 

fuelrecords_die 

FRD_ID (AUTO INCREMENT) 
FR_DIE_L 
FR_DIE_C 
fuelrecords_ID (foreign ID from fuelrecords) 

fuelrecords_pet 

FRP_ID (AUTO INCREMENT) 
FR_PET_L 
FR_PET_C 
fuelrecords_ID (foreign ID from fuelrecords) 

fuelrecords_oil 

FRO_ID (AUTO INCREMENT) 
FR_OIL_L 
FR_OIL_C 
fuelrecords_ID (foreign ID from fuelrecords) 

И мой код на странице:

<?php 
$qf=$_GET["q"]; 
$dtrf=trim($_GET["q"]); 
list($d, $m, $y) = explode('-', $dtrf); 
$mk=mktime(0, 0, 0, $m, $d, $y); 
$q=strftime('%Y-%m-%d',$mk); 

//$q=$_GET["q"]; 

$con = mysql_connect('IP', 'username', 'password'); 
if(!$con) { 
die('Could not connect: ' . mysql_error()); 
} else { 
mysql_select_db('jbsrint', $con); 
$sql="SELECT fuelrecords.VEH_LIST_REG, 
    fuelrecords.FR_WE, 
     fuelrecords_die.FR_DIE_L, 
      fuelrecords_die.FR_DIE_C, 
       fuelrecords_pet.FR_PET_L, 
        fuelrecords_pet.FR_PET_C, 
         fuelrecords_oil.FR_OIL_L, 
          fuelrecords_oil.FR_OIL_C 
           FROM fuelrecords 
            JOIN fuelrecords_die ON fuelrecords.FR_ID=fuelrecords_die.fuelrecords_ID 
             JOIN fuelrecords_pet ON fuelrecords.FR_ID=fuelrecords_pet.fuelrecords_ID 
              JOIN fuelrecords_oil ON fuelrecords.FR_ID=fuelrecords_oil.fuelrecords_ID 
               WHERE fuelrecords.FR_WE= '".$q."'"; 
$result = mysql_query($sql); 


echo "<H3><font size=\"4px\" color=\"FFFFFF\">Fuel Records Weekly Input</font></H3> 
<table border='1'> 
<form name=\"FR_REV\"> 
<tr> 
<th>Week Ending</th> 
<th>$qf</th> 
<tr> 
<th>Vehicle Reg</th> 
<th colspan=\"2\">Diesel Data</th> 
<th colspan=\"2\">Petrol Data</th> 
<th colspan=\"2\">Oil Data</th> 
</tr> 
<tr> 
<td></td> 
<td>Litres Used</td> 
<td>Total Cost</td> 
<td>Litres Used</td> 
<td>Total Cost</td> 
<td>Litres Used</td> 
<td>Total Cost</td> 
</tr>"; 
while($row = mysql_fetch_array($result)){ 
echo "<tr> 
<td><input type=\"text\" name=\"VEH_LIST_REG[]\" value=\"".$row["fuelrecords.VEH_LIST_REG"]."\" readonly=\"readonly\"></td> 
<td><input type=\"text\" name=\"FR_DIE_L[]\" value=\"".$row["FR_DIE_L"]."\" readonly=\"readonly\"></td> 
<td><input type=\"text\" name=\"FR_DIE_C[]\" value=\"".$row["FR_DIE_C"]."\" readonly=\"readonly\"></td> 
<td><input type=\"text\" name=\"FR_PET_L[]\" value=\"".$row["FR_PET_L"]."\" readonly=\"readonly\"></td> 
<td><input type=\"text\" name=\"FR_PET_C[]\" value=\"".$row["FR_PET_C"]."\" readonly=\"readonly\"></td> 
<td><input type=\"text\" name=\"FR_OIL_L[]\" value=\"".$row["FR_OIL_L"]."\" readonly=\"readonly\"></td> 
<td><input type=\"text\" name=\"FR_OIL_C[]\" value=\"".$row["FR_OIL_C"]."\" readonly=\"readonly\"></td> 
</tr>"; 
} 
} 
echo"<tr> 
<td></td><td></td> 
</tr> 
</form> 
</table"; 


mysql_close($con); 

?> 

Извинения, если это простой, но мое знание объединений является слабым, и все примеры, которые я мог бы найти в Интернете, похоже, связано с объединением двух таблиц.

Любая помощь, как обычно, с благодарностью принимается.

Аланы

ответ

1

Это происходит потому, что запрос объединяет запись из всех 4-х таблиц, и если не может найти то просто игнорировать всю строку. Попробуйте LEFT JOIN вместо JOIN.

Например:

$sql="SELECT fuelrecords.VEH_LIST_REG, 
fuelrecords.FR_WE, 
    fuelrecords_die.FR_DIE_L, 
     fuelrecords_die.FR_DIE_C, 
      fuelrecords_pet.FR_PET_L, 
       fuelrecords_pet.FR_PET_C, 
        fuelrecords_oil.FR_OIL_L, 
         fuelrecords_oil.FR_OIL_C 
          FROM fuelrecords 
           JOIN fuelrecords_die ON fuelrecords.FR_ID=fuelrecords_die.fuelrecords_ID 
            JOIN fuelrecords_pet ON fuelrecords.FR_ID=fuelrecords_pet.fuelrecords_ID 
             JOIN fuelrecords_oil ON fuelrecords.FR_ID=fuelrecords_oil.fuelrecords_ID 
              WHERE fuelrecords.FR_WE= '".$q."'"; 

Here are differences between JOIN types.

+0

Спасибо Алекс, имеет смысл сейчас вы обратить мое внимание на это, как мои нефтяные записи на этой неделе не было никаких данных. – Burdie87

Смежные вопросы