2013-04-07 141 views
0

我正在嘗試創建訂單歷史記錄頁面。一條SQL語句,可根據orderdetails_tbl中的order_ID查找所有應用程序。這是SQL。PHP和SQL返回重複結果

SELECT * FROM applications_tbl INNER JOIN orderdetails_tbl ON orderdetails_tbl.app_ID = applications_tbl.app_ID WHERE orderdetails_tbl.order_ID = $orderID 

結果以PHP顯示。

$result = mysql_query("SELECT * 
FROM applications_tbl 
INNER JOIN orderdetails_tbl ON orderdetails_tbl.app_ID = applications_tbl.app_ID WHERE orderdetails_tbl.order_ID = ".$order_ID.""); 
$row = mysql_fetch_assoc($result); 
echo "<table>"; 
do { ?> 

    <tr style="background-color:#fff"> 
    <td> <img src="getimage.php?ID=<?php echo $row['app_ID']; ?>" width="100" height="100" alt="IMAGE" /></td> 
      <td width="20%"><?php echo $row['app_name']; ?></td> 
      <td><?php echo $row['app_desc']; ?></td> 
      <td width="15%"><?php echo $row['app_cost']; ?></td> 
    </tr>  
    <?php 
} while ($row = mysql_fetch_assoc($result)); 

SQL返回正確的值,PHP正確顯示它們。我的問題是,它在網頁上返回許多重複的結果。它似乎是隨機的,但我注意到更多的應用程序/項目順序更重複的結果。在phpMyAdmin中,當我運行SQL時,它不顯示重複項。

歡呼你的時間。任何建議都會大受歡迎!

+0

你能告訴我們重複記錄嗎? – 2013-04-07 11:14:05

+0

嘗試'mysql_fetch_row' – 2013-04-07 11:17:35

+0

'orderdetails_tbl'聽起來像是包含訂單的訂單項。你應該有訂單頭部的另一個「訂單」表。否則,你可以使用'SELECT DISTINCT'。 – mrks 2013-04-07 11:18:07

回答

1

使用GROUP BY

$result = mysql_query("SELECT * FROM applications_tbl 
INNER JOIN orderdetails_tbl ON orderdetails_tbl.app_ID = applications_tbl.app_ID 
WHERE orderdetails_tbl.order_ID = ".$order_ID." GROUP BY app_ID"); 
0

小費是使用別名來獲得SQL語句更加可讀這樣的:

$result = mysql_query("SELECT * FROM applications_tbl at INNER JOIN orderdetails_tbl od ON od.app_ID = at.app_ID WHERE od.order_ID = ".$order_ID); 

但是,爲了回答你的問題,你可以在一個字段使用DISTINCT和列出您希望包含在記錄集中的字段,或者在SQL語句末尾添加GROUP BY -statement。

DISTINCT:(例如)

$result = mysql_query("SELECT DISTINCT at.id, od.app_ID FROM applications_tbl at INNER JOIN orderdetails_tbl od ON od.app_ID = at.app_ID WHERE od.order_ID = ".$order_ID); 

OR

GROUP BY(例如)

$result = mysql_query("SELECT * FROM applications_tbl at INNER JOIN orderdetails_tbl od ON od.app_ID = at.app_ID WHERE od.order_ID = ".$order_ID . " GROUP BY at.id"); 

什麼是$ ORDER_ID的實際價值? (我問,因爲你說你有相同的查詢,而你在瀏覽器中查看時只能看到重複內容,看起來很奇怪)