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); 

?> 

사과이 간단하지만 조인의 내 지식이 약하고 모든 예제 내가 찾을 수있는 경우 웹에서 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