2016-01-18 6 views
0

Я пытаюсь сделать запрос на работе, в котором я подсчитываю все вхождения идентификатора в одной таблице, а затем связываю описание и цвета, связанные с этими идентификаторами от другого.Неверный синтаксис рядом с ключевым словом On

Но я, кажется, пошатнул свой синтаксис SQL (прошло какое-то время, извините!). Это, наверное, просто глупая ошибка, и я был бы так любезен к тому, кто мог бы помочь мне!

SELECT 
    t1.activity_status_id, 
    count(*), 
    t2.description, 
    t2.color 
FROM 
    dbo.Activity t1 
INNER JOIN (
    dbo.Activity_Status t2 ON t1.activity_status_id = t2.id) 
GROUP BY 
    activity_status_id 

ответ

2
SELECT t1.activity_status_id, 
     Count(*), 
     t2.description, 
     t2.color 
FROM dbo.Activity t1 
     INNER JOIN dbo.Activity_Status t2 
       ON t1.activity_status_id = t2.id 
GROUP BY t1.activity_status_id ,t2.description,t2.color 
+0

Когда я делаю это я получаю ошибку: 'Column 'dbo.Activity_Status.description' недействительно в избранных потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY. – OmniOwl

+0

Хорошо, что сработало. Кажется, что проблема была в группировке. Благодаря! – OmniOwl

2

Просто удалите ненужные скобки ( и ) вокруг внутреннего соединения:

SELECT .... 
FROM 
    dbo.Activity t1 
    INNER JOIN dbo.Activity_Status t2 ON t1.activity_status_id = t2.id 
GROUP BY .... 
+0

Когда я это делаю, я получаю сообщение об ошибке: 'Column 'dbo.Activity_Status.description' недопустим в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY. – OmniOwl

+1

@Vipar Это действительно разумно, так как вы 'не группируются по этому столбцу и не применяют к нему какую-либо агрегированную функцию, поэтому он не может «непосредственно» присутствовать в списке выбора. Такая же история с колонкой «color» - вам нужно либо группировать ее, либо применять на ней агрегатную функцию. –

+0

Спасибо за объяснение! Замечательно, чтобы напомнить об этом: – OmniOwl