SQL - 将变量设置为另一个表

时间:2015-08-08 10:42:08

标签: sql variables

我正在开发一个体育应用程序,允许用户在2个团队之间进行视图固定。 灯具类具有以下属性:

public Fixture(int id, int tournamentId, 
                String gender, String section, 
                String team1, String team2, 
                String date, String time, String venue, String court) 

数据是从在线数据库中提取的,但我在使用SQL查询时遇到了一些问题。我使用的两个表是

  1. 锦标赛日志(锦标赛中有关球队的信息) 有以下专栏:

    Id(PK),TournamentId(FK),团队,性别,部分

  2. TournamentFixtures (关于不同灯具的信息) 有以下专栏:

    Id(PK),TournamentId(FK),日期,时间,球场,场地,TeamA_ID(FK - TournamentLogs.Id),TeamB_ID(FK - TournamentLogs.Id)

  3. 这两个表都包含一些其他信息,这些信息对于我在这里尝试做的事情并不是必需的。获取大部分信息很简单,因为我将tournamentId作为参数传递给查询,但是当我尝试在查询中获取团队A和B的团队名称时,我的问题就出现了。目前,我尝试将它们设置为变量,并使用TeamA_ID/TeamB_ID中的TournamentFixtures值检索它们。显然我没有做到这一点,所以任何帮助都会受到赞赏。

    这是我到目前为止所拥有的 -

    SELECT  TournamentFixtures.Id,
            TournamentFixtures.TournamentId,
            TournamentFixtures.Date,
            TournamentFixtures.Time,
            TournamentFixtures.Venue,
            TournamentFixtures.Court,
    
            TournamentLogs.Section,
            TournamentLogs.Gender,      
            SET @TeamA = (SELECT TournamentLogs.Team from TournamentLogs where TournamentLogs.Id = TournamentFixtures.TeamA_ID)
            SET @TeamB = (SELECT TournamentLogs.Team from TournamentLogs where TournamentLogs.Id = TournamentFixtures.TeamB_ID)
    
    FROM TournamentFixtures
    Where TournamentFixtures.TournamentId = '1' //will pass this parameter through as required
    

    我是SQL的新手,所以这可能是正确的方法。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望使用两个联接来引入您要查找的信息。您的查询将因语法错误而失败,因为TournamentLogs子句中不存在FROM

SELECT tf.Id, tf.TournamentId, tf.Date, tf.Time, tf.Venue, tf.Court,
       tla.Section, tla.Gender, tla.Team as TeamA, tlb.Team as TeamB 
FROM TournamentFixtures tf LEFT JOIN
     TournamentLogs tla
     ON tla.id = tf.TeamA_ID LEFT JOIN
     TournamentLogs tlb
     ON tlb.id = tf.TeamB_ID 
Where tf.TournamentId = '1' //will pass this parameter through as required

因为您要连接两次到同一个表,所以需要使用表别名。无论如何,这些都是一个好主意,因为它们使查询更容易编写和阅读。

通过分配变量,我不知道你的意思。对你的逻辑来说,这似乎是不必要的。