SQL连接到每个表的数组

时间:2012-03-22 00:30:11

标签: php sql join

我正在加入两个表:customersqueries

我从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']

2 个答案:

答案 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中的所有行