2017-02-21 30 views
0

我有用戶表和地址表。MySQL查詢到從地址表中獲取用戶的表和它的所有地址的單用戶數據

我需要寫一個MySQL查詢,如:

SELECT * FROM users 
LEFT JOIN addresses 
    ON users.user_id = addresses.user_id 
WHERE users.user_id = 32; 

該用戶有多個地址,我想通過其地址在PHP中循環,同時通過用戶數據循環象下面這樣:

foreach($users as $user){ 
    echo $user['username']; 
    foreach($user['address'] as $address){ 
     echo $address['street_address']; 
    } 
} 

請幫我寫正確的mysql查詢,謝謝。

+2

有什麼問題?....共享Db結構 – Naincy

+0

地址是逗號分隔還是在不同的行上 – mickmackusa

+0

除非你正在做一些不必要的連接結果,你將不得不循環遍歷每一行。您需要在循環中編寫條件語句才能在第一次迭代中回顯用戶名。每一行的地址都需要被回顯。 – mickmackusa

回答

0

考慮地址作爲單獨的表。

,因爲你需要從地址表中的所有行,那麼爲什麼不使用from addresses這樣的:

select users.username,addresses.address from addresses as a right join users as u on u.user_id = a.user_id where u.user_id = 32; 
+0

考慮到結果集中只需要兩列,請刪除貪婪的星號。 'users.username'和'addresses.address'。作爲一個風格問題,大寫關鍵字易於閱讀。如果您打算創建表別名,請在select語句中使用它們。 – mickmackusa

+0

取決於需求。他可能需要額外的專欄。那麼我更新我的答案根據你的w :) –

+0

如果有更大的要求,它沒有在問題中提到。 – mickmackusa

0

該查詢從此處,table_user鏈接使用用戶名和驗證table_address提取所有的地址。

SELECT tables_address.address FROM tables_address 
INNER JOIN tables_user on tables_user.userid = tables_address.userid 
WHERE tables_address.userid = X 

我建議你使用格式化的JSON格式 { 「數據」 的查詢結果:[{ 「AAA」, 「BBBB」},{ 「AAA」, 「BBBB」},... 。]}然後使用PHP的json函數處理返回數據

相關問題