2014-05-16 6 views
0

Это мой код. это всего 109 строк.sql server 2008, COUNT и DISTINCT объединяются вместе

1.

SELECT DISTINCT(SELECT top 1 lastname+', '+firstname FROM users WHERE privilege not in 
('Counselor','Guardian') AND userindex IN (SELECT userindex FROM studenttouser 
WHERE studentindex = students.studentindex)) AS teacher 

этот код дает мне 9 строк имен учителя.

2.

SELECT COUNT(students.lastname) as total_student 
from table 
where (SELECT top 1 lastname+', '+firstname FROM users WHERE privilege not in 
('Counselor','Guardian') AND userindex IN (SELECT userindex FROM studenttouser 
WHERE studentindex = students.studentindex))='sam' 

этот код дает мне

column1 
    34 

вопрос заключается в том, чтобы объединить вместе. COUNT students.name-column1, DISTINCT teacher-column2

Мне нужен только список имен и всего. например;

name  total_student 
sam   24 
John   35 
Julie  34 

и так далее ....
я имею проблемы со студентами подсчета. это нормально только само по себе, но когда я использую DISTINCT и COUNT, это дает мне ошибку.

Я попытался

SELECT COUNT(students.lastname) as Student_total, 
DISTINCT(SELECT top 1 lastname+', '+firstname FROM users 
WHERE privilege not in 
('Counselor','Guardian') AND userindex IN (SELECT userindex FROM studenttouser 
WHERE studentindex = students.studentindex)) AS teacher 

не работает. ПОМОГИТЕ!!!

ответ

0

Вам необходимо использовать Join и Group By. Я не могу быть уверен в том, что, если вы не знаете свои структуры таблиц и дизайн БД, эта таблица выглядит немного сложной, так как она требует самостоятельного объединения. Вы можете попробовать что-то на этих линиях.

SELECT Name, total_student 

FROM 
(
SELECT DISTINCT(SELECT top 1 lastname+', '+firstname as Name 
FROM users WHERE privilege not in 
    ('Counselor','Guardian') AND userindex IN (SELECT userindex FROM studenttouser 
    WHERE studentindex = students.studentindex)) 
) teacher 

INNER JOIN 
(
SELECT COUNT(students.lastname) as total_student 
from table 
) as Student 
ON (SELECT top 1 lastname+', '+firstname 
FROM users 
WHERE privilege not in ('Counselor','Guardian') AND userindex IN (SELECT userindex FROM studenttouser 
WHERE studentindex = students.studentindex) 
    )=teacher.Name 

GROUP BY teacher.Name 
Смежные вопросы