Как выбрать COUNT () объединенной таблицы, если объединенная таблица имеет комбинацию из нескольких столбцов в качестве первичного ключа? - PullRequest
3 голосов
/ 17 августа 2011

Я пытаюсь объединить две таблицы в sql и получить счетчик второй таблицы.Вторая таблица имеет несколько столбцов, три из которых вместе служат первичным ключом.Мой запрос начинался так:

SELECT times.*, COUNT(paylog.*) AS `total` 
FROM times 
LEFT JOIN paylog 
ON paylog.type = 'work' 
AND paylog.targetID = times.id 

Мне не понравилось использование имени таблицы в аргументах count ():

В синтаксисе SQL возникла ошибка;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с '*) AS total ОТ LEFT JOIN paylog' в строке 1

Если вВ таблице выплат я мог бы следовать приведенному здесь совету: Можно ли подсчитать количество строк в объединенной таблице? Но это не так.Как выбрать количество всех соединенных строк в таблице Paylog?Мне нужно, чтобы это было объединение, потому что оно в настоящее время получает счет с подзапросом и делает его немного медленным.

1 Ответ

1 голос
/ 17 августа 2011

Счетчик будет возвращать только число ненулевых значений в столбце или количество строк в наборе результатов для особого случая count(*).Другими словами count(paylog.*) не является допустимым SQL.

Вам не нужен уникальный столбец в таблице paylog для правильного подсчета, подойдет любой столбец.Если соединение выполнено успешно, оно будет увеличивать счетчик, в противном случае значение столбца будет нулевым, и счет останется прежним.

Если вы пытаетесь получить количество связанных строк в журнале выплат для каждой строкитогда вам также понадобится предложение group by times.id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...