У меня есть две таблицы, подобные этой.
create table teams (
"ID" Integer NOT NULL ,
"STADIUM_ID" Integer NOT NULL ,
"NAME" Varchar2 (50) NOT NULL ,
primary key ("ID")
) ;
create table matches (
"ID" Integer NOT NULL ,
"HOMETEAM_ID" Integer NOT NULL ,
"OPPONENT_ID" Integer NOT NULL ,
"HOMESCORE" Integer,
"OPPONENTSCORE" Integer,
primary key ("ID","HOME_ID","OPPONENT_ID")
) ;
У них есть следующие данные:
select * from matches;
ID HOME_ID OPPONENT_ID HOMESCORE OPPONENTSCORE
1 5 2 5 2
2 4 5 1 0
3 3 2 1 0
4 3 2 1 0
5 1 2 2 0
6 3 1 2 1
select * from teams;
ID STADIUM_ID NAME
1 1 Team1
2 3 Team2
3 4 Team3
4 2 Team4
5 5 Team5
Мне нужно получить команды, которые проиграли матч дома (стот же стадионид, что и победитель).Очень ценю вашу помощь ... Ожидаемый результат - нет для этих данных, потому что у каждой команды есть свой стадион.
Некоторые запросы не будут работать, но покажут, что я хочу получить.
select op.name from matches, (select name, stadium_id from teams where id = matches.home_id) home, (select name, stadium_id from teams where id = matches.opponent_id) op where home.stadium_id = op.stadium_id;
В этом запросе есть две проблемы - я не сравниваю счет, чтобы получить проигравшую команду, и я не могу получить доступ к совпадениям в подзапросах, подобных этому.