2016-02-04 5 views
1

У меня есть таблица с именем санитары с первым именем 2-го название И специальностьсредний возраст сгруппированы по различным полям

Таблица пациентов с именами и DOB обе таблицы имеют столбцы идентификаторов первичного ключа.

Существует еще одна таблица посещений, которая содержит идентификатор санитары ид больных

SELECT speciality, AVG (year(curdate()) - year(patients.DOB)) 
FROM medics, patients, visits 
WHERE medics.IDM = visits.medics 
GROUP by speciality; 

Я хотел бы сделать средний возраст по каждой специальности (я имею в виду операцию, педиатрия и т.д.). Выбранный запрос работает, но он показывает мне, что у всех пациентов на каждой линии один и тот же средний. ПОМОГИТЕ МНЕ PLS!

+0

Я также пытался группы по специальности, patient.name, но я упал я близко, но не сигара –

ответ

0

Попробуйте:

SELECT 
Speciality, 
ROUND(AVG(YEAR(NOW())-YEAR(DOB)),0) AS Years 
FROM visits 

INNER JOIN medics 
ON visits.IdMedic = medics.Id 

INNER JOIN patients 
ON visits.IdPatient = patients.Id 

GROUP BY Speciality 

Мои таблицы:

CREATE TABLE `visits` (
    `Id` int(11) NOT NULL, 
    `IdMedic` int(11) DEFAULT NULL, 
    `IdPatient` int(11) DEFAULT NULL, 
    PRIMARY KEY (`Id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

CREATE TABLE `patients` (
    `Id` int(11) NOT NULL, 
    `Name` varchar(45) DEFAULT NULL, 
    `DOB` date DEFAULT NULL, 
    PRIMARY KEY (`Id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

CREATE TABLE `medics` (
    `Id` int(11) NOT NULL, 
    `Name` varchar(45) DEFAULT NULL, 
    `Speciality` varchar(45) DEFAULT NULL, 
    PRIMARY KEY (`Id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 
+0

Спасибо yoou очень не могли бы вы объяснить мне, сэр? Я также хотел бы знать, если есть разница между внутренним соединением или выбором из нескольких таблиц, как я хотел сделать –

+0

См. Это: http://stackoverflow.com/questions/5118562/inner-join-vs-multiple- table-names-in-from –

+0

Надеюсь, я смогу вам помочь –

Смежные вопросы