2012-03-15 70 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 2012-03-15 11:34:47

相關問題