我正在建立一個小的內部電話號碼擴展列表。我應該在客戶端代碼中使用多個SQL查詢還是多個循環?
在數據庫中,我有兩個表格,people
表格和numbers
表格。這種關係分別是one-to-many
。
我想在單個HTML表格中顯示結果,每行只有一個人,但如果他們有多個數字,它會顯示單行中需要補償的人行上的行數。
現在,從數據庫中獲取的結果一起工作,我既可以做:
(pseudocode)
SELECT id, name
FROM people
foreach result as row {
SELECT number
FROM numbers
WHERE numbers.person_id = row['id']
}
這意味着我做一個查詢來獲取所有用戶,但當時如果我有100用戶,我正在執行100個附加查詢來獲取每個用戶的號碼。
相反,我能做到這一點是這樣的:
(pseudocode)
SELECT number, person_id
FROM numbers
SELECT id, name
FROM people
foreach people as person {
echo name
foreach numbers as number {
if (number.id = person.id) {
echo number
}
}
}
所以,本質上它是做同樣的事情,除了代替我做兩個查詢來獲取所有通過陣列格式的結果到數組,然後循環我的桌子。
我應該使用哪種方法還是有更好的方法來做到這一點?
我相信你的查詢是提問者已經在他的嵌套循環例子中做了什麼,然而,你的'GROUP_CONCAT'這個想法是我可能最終使用的一個很好的想法。 –
morrty在第二個例子中仍然使用兩個查詢。不太好重新加入imo。 –
@EmilVikström對不起。沒有看到頂部的兩個問題,我想他加入了!這加強了我對你的答案的投票哈哈。 –