2012-11-25 73 views
1

我想從一個mysql表中獲取一個值的數組,然後通過另一個表中搜索這些值並從中獲取數據。設想兩個表:訂單表(id,product_id)和產品表(id,price)。我基本上試圖使用一個數組充滿orders.id來對數組中的products.price進行求和。MySQL,PHP和多個表

我已經找到了如何讓使用

$results = mysql_query("SELECT id FROM orders WHERE some_value =" . $passed_value . ""); 
    while ($row = mysql_fetch_row($results)) 
     { 
     $results_array[] = $row[0]; 
     } 

數組充滿PHP orders.id的所以現在的問題是,現在我有一個數組,我怎麼用它來搜索另一個表爲數組中的任何id,然後從該行中提取數據。

+0

你需要在手機上做一個JOIN,所以有點難以給出完整的答案,雖然有人會或你可以做一些研究 – Steve

回答

2

您可以使用$results_array獲取產品ID,然後執行另一個查詢,如使用$results_array['product_id']所做的查詢。

但是,這是非常低效的。正確的方法是執行SQL連接或簡單的聯合查詢,如下所示:

SELECT orders.id, orders.product_id, products.price 
FROM orders, products 
WHERE orders.id = '" . $your_order_id . "' and products.id = orders.product_id 

生成的行將從兩個表中獲取所需的全部信息。

UPDATE:更多信息

當使用Where條款隱含加入,它有效的內連接的。即,當兩個表中至少有一個匹配時,它會返回行。另一方面,左連接返回第一個表中的所有行,即使第二個表中沒有匹配的行(在這種情況下,您將獲得與第二個表對應的相應字段爲空)。

因此,您選擇什麼取決於您想要獲得的結果,而不是性能(更多由您的字段上的索引決定,儘管加入類型可能會產生一些影響)。您可能想看看here(請確保您閱讀連續5次關於連接的頁面)以獲得完整的理解。

+0

這是否比在產品上進行左連接更高效或更低效率.id =訂單.product_id? – jcolicchio

+0

您選擇的加入會影響您獲得的結果而非性能,我更新了我的答案,其中包含更多信息。 – jbx