我正在加入两个表:customers
和queries
。
我从full_name
表中获取customers
,从description
表中获取queries
。
我想知道是否有可能将SQL连接的结果拆分成与数据来自的表对应的数组?例如:
$STH = $DBH->prepare("SELECT queries.description, customers.full_name FROM queries INNER JOIN customers ON queries.customer_id = customers.id");
$STH->execute();
$queries = $STH->fetchAll();
目前,我可以访问我的数据:$queries[0]['description']
和$queries[0]['full_name']
但是,我的问题是,是否有一种简单的方法来获取数据:$job[0]['query']['description']
和$job[0]['customer']['full_name']
。
答案 0 :(得分:0)
就像特雷斯科提到的那样,我无法理解为什么你需要那个。
我只能想象你想在PHP代码上看到包含这些信息的表格是什么。
也许您可以执行SELECT queries.description作为queries_description,然后您的PHP代码看起来像$queries['queries_description']
。它够了吗?
答案 1 :(得分:0)
您可以在PHP中循环结果并将其转换为您想要的数据结构,但您不能(据我所知)根据源表自动将数据分组到数组中。使用SQL的一种(有点混乱)替代方法是使用多查询并从原始结果创建临时表,然后基于每个表选择结果,如下所示:
CREATE TEMPORARY TABLE q AS
(SELECT queries.description, customers.full_name FROM queries
INNER JOIN customers
ON queries.customer_id = customers.id
);
SELECT q.description FROM q;
SELECT q.full_name FROM q;
因此,在那些SELECT
语句中,您必须列出每个结果所需的所有列。然后在PHP中,您将必须迭代每个结果集并根据需要将数据放入数组(或对象/任何)。 Errr。 fetchAll仍然无法获得您想要的内容,但第一个非空结果集上的fetchAll将获取queries
的所有行,而第二个将获取customers
中的所有行