SQL - Как вывести на экран учеников одного возраста? - PullRequest
1 голос
/ 14 января 2011

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

SELECT YEAR(CURRENT DATE-DATEOFBIRTH) AS AGE, COUNT(*) AS HOWMANY
FROM STUDENTS
GROUP BY YEAR(CURRENT DATE-DATEOFBIRTH);

это возвращает что-то вроде этого:

AGE      HOWMANY
---      -------
21       3
30       5

Спасибо.

TABLE STUDENTS COLUMNS:
StudentID (primary key), Name(varchar), Firstname(varchar), Dateofbirth(varchar)

Я думал о том, чтобы, возможно, использовать приведенный выше код и где-то добавить функцию concat, которая поместит имена слушателей в одну строку с

Ответы [ 4 ]

1 голос
/ 14 января 2011

Полученный набор данных не выглядит полезным на поверхности, основываясь на вопросе, если вы не ищете список студентов, их возраст и количество других учеников того же возраста:

SELECT NAME, AGE, HOWMANY
FROM STUDENTS AS S,
 (SELECT YEAR(CURRENT DATE-DATEOFBIRTH) AS AGE,
         COUNT(*) AS HOWMANY
  FROM STUDENTS
  GROUP BY YEAR(CURRENT DATE-DATEOFBIRTH)
 ) AS A
WHERE YEAR(CURRENT DATE-S.DATEOFBIRTH) = A.AGE

В основном выполните самостоятельное объединение с подсчетом возраста, который вы рассчитали.

1 голос
/ 14 января 2011

ваш существующий SQL выглядит так, как будто он содержит ошибки, но вы можете использовать GROUP_CONCAT:

добавить GROUP_CONTACT(colname) в качестве другого столбца для извлечения, а затем разделить на , в вашем приложении

0 голосов
/ 14 января 2011
CREATE TABLE #Student
(
 id int identity(1,1),
 age int,
 name varchar(255) 
)


INSERT INTO #Student S
VALUES(21,'bob'),
(21,'tom'),
(21,'dick'),
(21,'william'),
(35,'mark'),
(35,'anthony')

SELECT age,COUNT(*),STUFF(
(
  SELECT ',' + name
  FROM #Student SS
  WHERE SS.age = S.age
  FOR XML PATH('')
), 1, 1, '')
FROM #Student s
GROUP BY age
0 голосов
/ 14 января 2011

А как же ...

SELECT name FROM students WHERE age = ENTER_AGE_HERE;

У вас есть имена, и количество студентов можно узнать, найдя количество записей, которые вы получите по запросу.

Например, в PHP вы можете найти длину массива.

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

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