2014-01-17 16 views
0

我在PHP初學者,所以我需要幫助瞭解如何執行比較了該有很多記錄兩個表的任務。腓比較了兩個用於每兩個表值代碼效率

在user表中我有:

id, 
username, 
phoneno, 
city, 
carddetails 

,並在另一個表具有以下字段:

id, 
typeofthings, 
typeofcard, 
user_id(foreignkey). 

我不想用我的查詢聯接。我想用它的類型來檢索所有用戶數據以顯示。

如何在單個foreach中執行此操作?請幫助me.thanks提前

+1

是的,你想要把它在一個連接查詢。這就是與外鍵相關的關係數據庫。 – miyasudokoro

+2

你想要的東西沒有意義。如果您不加入表格或在兩行的行之間建立聯合,那麼您將無法僅通過一個循環遍歷數據... –

+1

如果您在談論「代碼效率」,那麼它將比連接兩個獨立查詢的效率高出百倍,並循環兩者的結果。 – miyasudokoro

回答

1

你應該有加入做到這一點。

雙手向下。它會讓你的生活更輕鬆。

隨着加入:

foreach($joined_data_row as $data) { 
// do whatever you need to do. 
} 

無:

foreach($user_in_table_one as $user) { 
// another query - 
$users_data = ORM::for_table("user_data")->where("user_id", $user['id'])->find_one(); 
//do what you need to do. You now have $user from the first table and $user_data from the second. 
} 

現在,這是壞,壞,壞,壞的。 你會讓你的班級失敗 - 你將被解僱。 因爲你是一個查詢返回的每個行 這是較重的數據庫上的負載很多倍! 我只是遞給你一個繩套,不要用它

有了一個連接,但是,您只做一個數據庫查詢掛自己 - 這是很多,很多,更加高效。現在

,因爲你是一個初學者,我給你這個提示: https://github.com/j4mie/idiorm

它會讓你更容易的數據庫功能 - 包括你的加入 -

我知道什麼時候我是初學者,我恨MySQL的,直到我跨 來(我們使用的推進,如今,然而 - )

+0

喜先生是一個新鮮的,多數民衆贊成Ÿ要問這樣的,我們將使用連接查詢的高效化的代碼請回復我不明白 – user3204852

+0

嗯,你學習? - 你會看到一次又一次,這是合乎邏輯的在單獨的表格中組織相關數據 - 另外,小表格在各個方面都更加高效:MySQL速度,PHP簡單性,人類可讀性以及組織優勢。然而,多個表將意味着更多的查詢 - 因此,假設一個查詢需要100毫秒,你必須爲每個表做一個單獨的查詢 - 在這個例子中,你要求*一個* foreach循環 - 所以這就是我給你的 - 但是你也可以(假設沒有加入,每個表都做一個foreach)--- –

+0

所以 - 在我的回答中,我在循環中放了另一個查詢 - 所以foreach $ result - 它會觸發另一個100ms的查詢。如果您有100行,則需要10秒鐘才能在我的答案中處理該示例!對於兩個foreach循環,需要200ms BUT-帶有JOIN語句,我們可以根據需要加入儘可能多的表,並且由於MySQL將生成的JOIN視爲一個表,因此查詢只需要100ms - (請記住,重新假設這些時間是簡單的) - 底線是,JOIN幾乎不影響MySQL的速度 - 因此,如果不加入表格,您必須爲每個表格進行查詢。 –