2012-03-15 11 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); 

?> 

謝罪これは単純ですが、参加するの私の知識が弱く、私は見つけることができるすべての例ならば2つのテーブルを結合することに関連しているように見えました。

いつものように助けてくれてありがとうございました。

アラン

答えて

1

それは、クエリはすべての4つのテーブルからレコードを結合しているためであり、いずれかを見つけることができないならば、ちょうど全体の行を無視します。 JOINではなくLEFT 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

関連する問題