2012-10-08 21 views
0

我有数据库架构如下:如何使用以下模式编写此查询?

Teams(teamID,teamName,home,leagueName) 
Games(gameID,homeTeamID,guestTeamID,date) 

我如何查询(使用SQL) 所有teamID S其中球队交手TEAM1但不反对TEAM2。 'team1和team2是teamName列中的一些数据值?

回答

0

假设没有HomeTeamGuestTeam没有游戏。试试这个,

SELECT a.gameID, 
     b.TeamName AS HomeTeam, 
     c.TeamName AS GuestTeam, 
     a.`date` 
FROM GAMES a 
     INNER JOIN Teams b 
      ON a.homeTeamID = b.teamID 
     INNER JOIN Teams c 
      ON a.guestTeamID = c.teamID 
WHERE (
      b.TeamName = 'Team1' AND 
      c.teamName <> 'Team2' 
     ) 
     OR 
     (
      c.TeamName = 'Team1' AND 
      b.teamName <> 'Team2' 
     ) 
0

所有teamIDs所在的球队交手TEAM1但不反对 的TEAM2

SELECT t1.teamName AS 'Home', t2.TeamName AS 'Guest', g.Date 
FROM 
(
    SELECT * 
    FROM Games 
    WHERE (homeTeamID = 'Team 1' OR guestTeamID = 'Team 1') 
    AND (homeTeamID <> 'Team 2' OR guestTeamID <> 'Team 1') 
) g ON t.teamID = hg.homeTeamID 
INNER JOIN teams t1 ON g.homeTeamID = t1.teamId 
INNER JOIN teams t2 ON g.guestTeamID = t2.teamId