2014-10-21 2 views
0

Я пытаюсь найти средние игры и средние выступления Plat для MLB в течение сезона 2012 года для outfielders ORDERED BY their birthYear. В настоящее время этот SQL показывает записи для каждого игрока. База данных является база данных lahman http://seanlahman.com/files/database/readme2012.txtВложенные Sabermetric SQL - средние пояса и игры

Я получаю ошибку:

MySQL Error 1248: Every derived table must have its own alias 

Кто-нибудь увидеть проблему. Это определенно в том, как я вложил выбранные, но я не уверен, где.

SELECT AVG(PA) AS AVG_PA, AVG(b.G) AS AVG_G 
     FROM(
     SELECT CONCAT(m.nameFirst, ' ', m.nameLast) AS playerName, m.birthYear, f.pos, b.yearID, b.teamID, b.stint, 
      b.G, 
      (b.AB+b.BB+b.HBP+b.SF+b.SH) AS PA 
     FROM Batting b 
     JOIN Master m 
      ON b.playerID = m.playerID 
     JOIN Fielding f 
     ON f.playerID = b.playerID 
      AND f.yearID = b.yearID 
      AND f.stint = b.stint 
     WHERE (f.POS = 'LF'AND b.yearID = '2013') 
      OR (f.POS = 'CF' AND b.yearID = '2013') 
      OR (f.POS = 'RF' AND b.yearID = '2013') 
    ) 
    ORDER BY m.birthYear 

Благодаря

+0

Ответ на этот вопрос решает вашу проблему? – radar

+0

Эй, @ RADAR, ваше решение помогло найти средние значения. Однако моя логика была неправильной. Я хочу найти статистику ватин для отдельных аутфилдеров. Тем не менее, многие аутфилдеры играли разные полевые позиции («RF», «CF» и «LF»). Таким образом, проблема в том, что, поскольку я схожу с таблицей ватин и поиском по позиционированию, я получаю несколько повторных строк для каждого игрока, и это мешает среднему. Мне нужно выяснить, как получить отдельные случаи, поэтому идентификаторы или имена игроков не повторяются, как только они обнаруживают, что они играли в поле. – user1093111

+0

@ RADAR спасибо за вашу помощь, между прочим. – user1093111

ответ

0

Вашего подзапрос необхо- ALIAS Name

во внешнем ВЫБРАТЬ вам необходимо получить доступ к столбцам, используя псевдоним таблицы, данный подзапрос.

SELECT AVG(T.PA) AS AVG_PA, AVG(T.G) AS AVG_G 
     FROM(
     SELECT CONCAT(m.nameFirst, ' ', m.nameLast) AS playerName, m.birthYear, f.pos, b.yearID, b.teamID, b.stint, 
      b.G, 
      (b.AB+b.BB+b.HBP+b.SF+b.SH) AS PA 
     FROM Batting b 
     JOIN Master m 
      ON b.playerID = m.playerID 
     JOIN Fielding f 
     ON f.playerID = b.playerID 
      AND f.yearID = b.yearID 
      AND f.stint = b.stint 
     WHERE (f.POS = 'LF'AND b.yearID = '2013') 
      OR (f.POS = 'CF' AND b.yearID = '2013') 
      OR (f.POS = 'RF' AND b.yearID = '2013') 
    ) T 
    ORDER BY T.birthYear 
Смежные вопросы