Как включить JOIN, когда столбцы имеют одно и то же имя

Вопрос:

Название немного запутанно, надеюсь, ясно, что я пытаюсь сделать из моего запроса. Я думал, что понимаю, что я понимаю, что я не понимаю, вот мой запрос:

     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_id'], я получаю Undefined index: T0.metric_id

Если кто-нибудь может пролить свет на это, я буду очень благодарен.

Лучший ответ:

Попробуй это:

$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'];

Ответ №1

Ваш запрос должен быть

$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

Ответ №2

Либо вам нужно добавить некоторые псевдонимы в выбранные вами столбцы

SELECT DATE(T0.timestamp) as tstamp, SUM(T0.total_responses) as responses...

и ссылайтесь на столбцы по псевдониму:

$result['tstamp']

или вы можете ссылаться на столбцы по числовому индексу:

$result[0]

Оцените статью
TechArks.Ru
Добавить комментарий