php - SQL select查询3个表并将结果放入一个数组中,递增1

标签 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

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

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

并将所有信息放入一个变量中表示标题,并将所有信息放入另一个变量中表示状态。在这种情况下,该信息可以是各种结果,因此应该用逗号或空格分隔,但重要的是要加载到数组的同一单元格内。

此操作将生成一个数组,其中每个用户包含 1 行,其中包含所有用户数据列,另外 2 列用于标题和状态,其中每行应包含从 cursos 表中提取的各种结果,具体取决于在本例中,用户 ID“48”在订阅表中出现了多少次。目标是将标题和状态信息放在单个单元格上,无论 Cursos 表中有多少结果。欢迎任何帮助。

所以最终结果数组应该是这样的: enter image description here

最佳答案

如果我没看错的话,您构建的数据数组必须与正常情况稍有不同。例如大多数人都有

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

关于php - SQL select查询3个表并将结果放入一个数组中,递增1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19453491/

相关文章:

php - 显示数据库值?

php - 初学者...对同一函数中的同名变量感到困惑

mysql - 加速tokudb "alter table ... engine=TokuDB”

php - 如何在不重复的情况下合并 2 个选择

mysql - 如果语句为 1,则运行特定的 SQL 语句

mysql - 如果表不存在,为什么 DROP TABLE IF EXISTS 会导致 MySQL 警告?

sql - sql server上的索引重建

sql - 自动调用存储过程

php - 主服务器多站点 htaccess

javascript - 我可以创建一个同时适用于 HTTP 和 HTTPS 的 javascript 文件吗