Проблема с повторяющимся именем столбца 'user_id' - PullRequest
0 голосов
/ 26 апреля 2011

У меня проблема с попыткой подсчитать количество записей пользователя в соответствии с идентификатором пользователя, однако я использую подзапрос для объединения двух таблиц, одна из которых имеет параметр count, но я получаю сообщение об ошибке duplicate column name 'user_id.

Запрос:

$sql = "SELECT loc.location_id,
               COUNT(loc.location_id) AS total_records
        FROM locations loc
        LEFT JOIN 
        (
            SELECT usr.*,
                  loc.*
            FROM 
            (
                members usr

                INNER JOIN locations loc
            ) 
            WHERE usr.user_id = " . $user_id . "
            AND usr.account_disabled = 0
            ORDER BY loc.submit_date DESC
        ) usr ON (loc.user_id = usr.user_id)";

Все, что мне нужно, это вернуть информацию о пользователе и счет total_records, выполненный функцией COUNT.

Приветствия.

РЕДАКТИРОВАТЬ:

Вот что я получаю для этого SQL:

 SELECT loc.location_id,
       loc.street_name,
       loc.city,
       loc.state,
       loc.county,
       loc.country,
       usr.user_id,
       usr.username,
       COUNT(loc.location_id) AS total_records
 FROM  locations loc
 INNER JOIN members usr ON (loc.user_id = usr.user_id)              
 WHERE loc.user_id = $user_id
 AND   usr.account_disabled = 0
 GROUP BY loc.location_id

enter image description here

Ответы [ 2 ]

2 голосов
/ 26 апреля 2011

Не совсем понятно, почему вы получили производный набор результатов или LEFT JOIN. Попробуйте это:

 SELECT    loc.location_id,
           COUNT(loc.location_id) AS total_records
 FROM        LOCATIONS_TABLE   loc
 INNER JOIN  MEMBERS_TABLE   usr
      ON (loc.user_id = usr.user_id)              
 WHERE loc.user_id =   $user_id  
 AND   usr.account_disabled = 0
 GROUP BY loc.location_id
1 голос
/ 26 апреля 2011

Я думаю, что проблема заключается в этой части:

SELECT usr.*,
       loc.*

В обеих таблицах есть user_id

...