繁体   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