Php 列具有相同名称时如何保持连接打开

Php 列具有相同名称时如何保持连接打开,php,mysql,Php,Mysql,标题有点让人困惑,希望能从我的查询中清楚地看出我想做什么。我以为我理解联接,但显然不是,这是我的$查询: SELECT DATE(T0.timestamp), SUM(T0.total_responses), SUM(T0.responses), T0.metric_id, T1.metric_id FROM `personal_aggregates` AS T0 L

标题有点让人困惑,希望能从我的查询中清楚地看出我想做什么。我以为我理解联接,但显然不是,这是我的$查询:

     SELECT DATE(T0.timestamp),
            SUM(T0.total_responses), 
            SUM(T0.responses), 
            T0.metric_id, 
            T1.metric_id
       FROM `personal_aggregates` AS T0
  LEFT JOIN `qrs_metrics` AS T1 
         ON T0.metric_id = T1.qrs_metric_id
      WHERE T0.user_id = 1 AND 
            T0.duration = '1' AND 
            T0.category_id IN (1,2,3,4) AND 
            T0.timestamp >= 'period_duration'
   GROUP BY DATE(T0.timestamp)";
我正在尝试联接metric_id和qrs_metric_id列上的表。但是,我从上述查询中没有得到任何结果。当我在PHP中循环遍历结果并检查任何变量时,例如
$result['T0.metric\u id']
,我得到
未定义的索引:T0.metric\u id

如果有人能对此有所了解,我将不胜感激。

您的问题应该是

$query = "SELECT 
                DATE(T0.timestamp) AS T0timestamp, 
                SUM(T0.total_responses) AS total_responses, 
                SUM(T0.responses) AS responses,
                T0.metric_id, 
                T1.metric_id AS metric_id_2
        FROM `personal_aggregates` AS T0
就像

$result['metric_id'];
$result['metric_id_2'];
$result['T0timestamp'];
$result['total_responses'];
从关联数组访问中排除表别名,例如“T0.XXX”错误。您只能在SQL中执行此操作,请尝试以下操作:

$query = "SELECT DATE(T0.timestamp), SUM(T0.total_responses), SUM(T0.responses),
               T0.metric_id AS metric0, T1.metric_id AS metric1
        FROM `personal_aggregates` AS T0
        LEFT JOIN `qrs_metrics` AS T1 ON T0.metric_id = T1.qrs_metric_id
        WHERE T0.user_id = 1 AND T0.duration = '1'
        AND T0.category_id IN (1,2,3,4)
        AND T0.timestamp >= 'period_duration'
        GROUP BY DATE(T0.timestamp)";
现在,您可以使用以下方法来改变现状:

echo $row['metric0'];
echo $row['metric1'];

或者需要向选定列添加一些别名

SELECT DATE(T0.timestamp) as tstamp, SUM(T0.total_responses) as responses...
并按别名引用列:

$result['tstamp']
或者,您可以通过数字索引引用列:

$result[0]

请下次格式化您的SQL代码。没有人愿意读一行巨大的厄运。如果你直接在MySQL(工作台或命令行)中运行查询,你会得到结果吗?连接是正确的,是PHP在这里表现不好。我建议在查询中添加列别名:
选择T0.metric\u id作为T0\u metric\u id,T1.metric\u id作为T1\u metric\u id,…
,然后在PHP中将它们读为
$row['T0\u metric\u id']
$row['T1\u metric\u id']
@Trent是的,我已经通过phpmyadmin尝试过了表结构是什么?(似乎个人_聚合没有度量_Id列?(也许您需要按T0.metric_Id和T1.metric_Id进行分组)和别名T0&T1.metric_Id..太棒了,请注意。首先将此标记为答案。