2016-03-18 3 views
0

enter image description hereКак отменить групповой эффект наличия предложения в MySQL?

enter image description here

Запрос: Для каждого пилота, который сертифицирован для более чем три самолета, найти Ид и максимальный диапазон крейсерской каждый самолет он/она сертифицирована.

запросов я писал:

select certified.eid,cruising_range 
from certified join employee 
on employee.eid=certified.eid 
join aircraft 
on certified.aid=aircraft.aid 
having count(certified.eid)>3; 

Выход:

enter image description here

он показывает только один диапазон крейсерской, но пилот с ид 10 сертифицирован для 4 самолетов. как получить эти другие строки?

+1

вам нужен Предложение GROUP BY. – jarlh

ответ

2

Ваш проблема действительно состоит из двух частей:

  1. Найти пилотов, которые сертифицированы на более чем трех самолетов

    SELECT eid FROM certified GROUP BY eid HAVING COUNT(*) > 3 
    
  2. Найти крейсерскую диапазон этих самолетов

    SELECT eid, cruising_range FROM aircraft JOIN certified USING (aid) ... 
    

Объединение двух:

SELECT eid, cruising_range FROM aircraft JOIN certified USING (aid) JOIN (
    SELECT eid FROM certified GROUP BY eid HAVING COUNT(*) > 3 
) t USING (eid) 
+0

Спасибо, это работает так, как я хотел. @eggyal – mightyWOZ

+0

@Balraj тогда, пожалуйста, отметьте его как правильный ответ;) – Mainz007

0

использование group by certified.eid.

Граф представляет собой совокупность оператор, который делает только одна строка возвращается (без группы по п)

select certified.eid,cruising_range 
from certified join employee 
on employee.eid=certified.eid 
join aircraft 
on certified.aid=aircraft.aid 
group by certified.eid` 
having count(certified.eid)>3; 

без группы по совокупной функции возврата только одна строка

+0

Он не дает требуемого выхода. в выходном идентификаторе 10 будет повторяться по времени, потому что существует 4 разных самолета с различным диапазоном круиза. – mightyWOZ

+0

попробуйте группу cert.eid', employee.eid @Balraj –

+0

Думаю, вам нужно снова рассмотреть вопрос, я не хочу ничего группировать. также ваш код не запускается. Я должен помещать круглые скобки для группы по столбцу. @Rahautos – mightyWOZ