2015-06-17 2 views
0

Попытка решить # 12 на http://sqlzoo.net/wiki/The_JOIN_operationКак получить целевой результат с SQL запрос с JOIN заявление

«Для каждого матча, где забил„GER“, шоу matchid, дата матча и количества голов, забитых на„GER“ "

Это то, что я имею в поле запроса:

SELECT matchid, mdate, COUNT(player) 
FROM game 
JOIN goal 
ON game.matchid = goal.id 
WHERE (team1 = 'GER' OR team2 = 'GER') 
GROUP BY matchid 

я получаю„ Неверный ответ Некоторые данные неверен“. Вы можете помочь? Спасибо.

+0

Думаю, вам нужно контролировать игры, в которых забил GER, а не только игры, в которых они играли. Вы рассчитываете общее количество голов, забитых в любых играх, где играл GER. – APH

ответ

1

Расширение на мой комментарий:

Select a.matchID, b.mdate, count(*) as Goals 
from goal a 
inner join game b 
on a.matchID = b.ID 
where a.teamID = 'GER' 
group by a.matchID, b.mdate 

Вы должны начать с голам ГЭР, а затем присоединиться, чтобы получить другую информацию о матче. Ваш ответ начинается с игр, которые играл GER, и это не то, что запрашивается.

+0

Привет @APH, спасибо! вы правы, это должно быть конкретным для целей GER. – stackOFjw

+0

Рад, что это вам помогло, @stackOFjw. Если ваш вопрос решен, примите этот ответ. – APH

+0

сделаю. Еще раз спасибо! Также, пожалуйста, дайте upvote :) – stackOFjw

0

Хорошо, с помощью ПВД, я пересмотрел свой первоначальный код:

SELECT matchid, mdate, COUNT(player) 
FROM game 
JOIN goal 
ON game.id = goal.matchid 
WHERE (team1 = 'GER' OR team2 = 'GER') AND teamid = 'GER' 
GROUP BY matchid 

Я добавил "TeamID = 'GER'" в WHERE заявлении. Еще раз спасибо!

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