2012-02-06 149 views
0

我有下面的代碼,它可以正常工作,但是現在我想(如果可能)添加第三個select語句來收集更多信息並在while循環中返回它作爲$ row2。 有沒有什麼辦法可以做到這一點,或者我將不得不徹底重組我的代碼才能使它工作?PHP MySQL - 在循環中返回多個選擇查詢

任何幫助或指導將受到感謝。當前的代碼如下:

mysql_select_db("jbsrint", $con); 
$result = mysql_query("SELECT *, DATE_FORMAT(Date_Registered, '%d-%m-%Y') AS Date_Registered, DATE_FORMAT(Date_Last_MOT, '%d-%m-%Y') AS Date_Last_MOT,  DATE_FORMAT(Date_Last_Tax, '%d-%m-%Y') AS Date_Last_Tax FROM Veh_List ORDER BY ID DESC"); 
$DUE_DATES = mysql_query("SELECT *, DATE_FORMAT(MOT_DUE_DATE, '%d-%m-%Y') AS MOT_DUE_DATE, DATE_FORMAT(Date_Tax_Due, '%d-%m-%Y') AS Date_Tax_Due FROM due_dates ORDER BY ID DESC"); 
echo "<table border='1'> 
<tr> 
<th>Vehicle Reg</th> 
<th>Vehicle Make</th> 
<th>Vehicle Model</th> 
<th>Vehicle Colour</th> 
<th>Date Registered</th> 
<th>Date Of Last MOT</th> 
<th>MOT Due</th> 
<th>Date Of Last Tax</th> 
<th>Tax Due</th> 
<th>Vehicle Driver</th> 
<th>Vehicle Driver Tel</th> 
</tr>"; 
while($row = mysql_fetch_array($result) and $row1 = mysql_fetch_array($DUE_DATES)) 
{ 
    echo "<tr>"; 
    echo "<td class=\"td1\">" . $row['Vehicle_Reg'] . "</td>"; 
    echo "<td >" . $row['Vehicle_Make'] . "</td>"; 
    echo "<td class=\"td1\">" . $row['Vehicle_Model'] . "</td>"; 
    echo "<td>" . $row['Vehicle_Colour'] . "</td>"; 
    echo "<td class=\"td1\">" . $row['Date_Registered'] . "</td>"; 
    echo "<td>" . $row['Date_Last_MOT'] . "</td>"; 
    echo "<td class=\"td1\">" . $row1['MOT_DUE_DATE'] . "</td>"; 
    echo "<td>" . $row['Date_Last_Tax'] . "</td>"; 
    echo "<td class=\"td1\">" . $row1['Date_Tax_Due'] . "</td>"; 
    echo "<td>" . $row['Vehicle_Driver'] . "</td>"; 
    echo "<td class=\"td1\">" . $row['Vehicle_Driver_Tel'] . "</td>"; 
} 

echo "</tr>"; 
echo "</table>"; 
mysql_close($con); 
?> 

回答

1

您不應該爲每個表使用單獨的查詢。相反,你應該使用JOIN在一個單一的查詢檢索多個表中的相關數據:

SELECT 
    veh_List.col1, 
    veh_List.col2, 
    due_dates.col3, 
    ...etc... 
FROM veh_List 
JOIN due_dates ON veh_List.id = due_dates.id 
-- add more joins here if you need data from more tables 
ORDER BY veh_List.id DESC 

你應該瞭解JOIN關鍵字,這提供了各種可能性,包括瞭解INNER JOINOUTER JOIN之間的差異。

+0

完美的馬克...... – 2012-02-06 10:58:38

0

我相信你可以簡單地添加另一份聲明中,並以同樣的方式結合起來,你現在有,但是我的建議是使用正在修改的代碼的機會,併合並SQL查詢到一個。

另外,看看你的數據庫設計 - 到期日期和註冊車之間是否存在一對一的關係?如果是這樣,爲什麼不把兩個表合併在一起? (當然,我只能看到您在選擇查詢中使用的列)。

此外,依靠訂單來匹配記錄似乎有點危險 - 如果從截止日期的一行被刪除,該怎麼辦?