簡體   English   中英

SQL選擇3個表的查詢並將結果放入一個數組中,並遞增1

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM