我正在尝试从一个表中选择一个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获取数据。 这样查询的工作方式就像从表用户中提取相同的数据一样,具体取决于在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如下所示:
答案 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;
}