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