SQL选择查询3个表并将结果放入一个递增1的数组中

时间:2013-10-18 15:34:32

标签: php mysql sql

我正在尝试从一个表中选择一个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";

enter image description here

从表用户那里提取所有数据,然后根据表预订的值从表cursos获取数据。 这样查询的工作方式就像从表用户中提取相同的数据一样,具体取决于在subcriptions表中找到用户id的次数。假设订阅表包含

curso_id | user_id 
14       | 48
12       | 48

在这种情况下,它将生成2个数组,每个数组将包含来自用户的所有数据,而不是来自cursos的数据。

所以我的问题是如何创建一个SQL查询,它将执行SELECT * FROM Users,在表格的第一行完成之后,我想执行第二个查询,如下所示:< / p>

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”的次数。目标是将titluo和status的信息放在单个单元格上,无论cursos表中有多少结果。欢迎任何帮助。

因此最终结果数组shuld如下所示:enter image description here

1 个答案:

答案 0 :(得分:0)

如果我正确地阅读,你将不得不建立与正常情况不同的数据阵列。例如大多数人都有

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;
}