[英]SQL select query for 3 tables and put result into one array incrementing by one
我試圖從一個表中選擇一個sql,然后從第二個表中選擇一個sql,然后將結果放入同一數組中。
我正在使用的原始SQL查詢如下:
$sql = "SELECT users.*, cursos.titulo, subscriptions.status
FROM users
LEFT OUTER JOIN subscriptions
ON users.userID = subscriptions.user_id
LEFT OUTER JOIN cursos
ON cursos.id = subscriptions.curso_id";
這將從表用戶中提取所有數據,然后根據表預訂的值從表cursos中獲取數據。 這樣,查詢的工作方式就像是從表用戶中提取相同的數據一樣,這取決於在子表中可以找到用戶ID的次數。 假設訂閱表包含
curso_id | user_id
14 | 48
12 | 48
在這種情況下,將生成2個數組,每個數組將包含來自用戶的所有數據,而不是來自cursos的數據。
所以我的問題是如何使SQL查詢首先執行SELECT * FROM Users,在表的第一行完成之后,我想執行第二個查詢,如下所示:
SELECT users.id, cursos.titulo, subscriptions.status
FROM users
LEFT OUTER JOIN subscriptions
ON users.userID = subscriptions.user_id
LEFT OUTER JOIN cursos
ON cursos.id = subscriptions.curso_id
並將所有信息放在一個變量中,以供titulo使用,並將另一個信息放入狀態中,以獲取狀態。 在這種情況下,此信息可能是各種結果,因此應將其除以逗號或空格,但重要的是將其裝入數組的同一單元內。
此操作將生成一個數組,其中每個用戶將包含1行,其中包含所有用戶數據列,另外2列涉及titulo和status列,其中每一行應包含從cursos表中提取的各種結果,具體取決於多少次在這種情況下,在預訂表中看到的用戶ID為“ 48”。 目的是將這些tiltuo和狀態信息放在單個單元格上,而不管cursos表中有多少結果。 任何幫助都將受到歡迎。
因此,最終結果數組應如下所示:
如果我沒看錯的話,您將不得不以與正常情況稍有不同的方式來構建數據數組。 例如大多數人有
while($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
如果要從另一個查詢添加到該數組,則必須使用兩個查詢之間共有的特定字段來對數組進行鍵控,例如
while($row = mysql_fetch_assoc($result)) {
$key1 = $row['key1'];
$key2 = $row['key2'];
etc...
$data[$row1][$row2][....][] = $row;
}
然后使用下一個查詢中的相同鍵,例如
SELECT key1, key2, ...
while($row = mysql_fetch_assoc($other_result)) {
$key1 = $row['key1']
...
$data[$row1][$row2][....][] = $row;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.