【问题标题】:Multiple results from an SQL query来自 SQL 查询的多个结果
【发布时间】:2013-08-24 23:33:21
【问题描述】:

我不是 100% 确定如何表达这个问题。我尽可能多地搜索档案,但找不到我要找的东西。

我有三个数据库表。

tblSeason(Id,Season)

tblPlayers(ID,FirstName,LastName,DisplayName,Handicap,Current)

tblMatch(ID,MatchDate,Season,Player1,Player2,Player1Score,Player2Score,Winner)

我一直在尝试找出如何返回如下内容。

播放器1

Player2 -- 2 场对阵

Player3 -- 1 场对阵

播放器2

Player1 -- 2 场对阵

Player3 -- 3 场对阵

谢谢

SELECT p4.displayname AS [Opponent], count(*) AS [Games Against] 
FROM ((SELECT player1,player2 FROM tblMatch) 
UNION ALL SELECT player2, player1 FROM tblMatch) m 
INNER JOIN tblPlayers p4 ON m.Player2=p4.id) 
WHERE player1=(SELECT p3.id FROM tblPlayers p3 WHERE p3.displayname=?) 
GROUP BY player1, player2;

我正在使用 Visual Studio 并插入参数一次为 1 个玩家执行此查询。

以下操作不显示玩家姓名。

SELECT m.Player2 AS [Opponent], count(*) AS [Games Against] 
FROM (SELECT player1,player2 FROM tblMatch
UNION ALL SELECT player2, player1 FROM tblMatch) m 
WHERE player1=1 
GROUP BY player2;

感谢您为我指明正确方向的帮助。我最终得到了我想要的结果。

SELECT p4.displayname AS [Opponent], count(*) AS [Games Against]
FROM ((SELECT player1, player2
FROM(tblMatch)
UNION ALL
SELECT player2, player1
FROM tblMatch) m
INNER JOIN tblPlayers p4 ON m.Player2=p4.id)
WHERE player1=1
GROUP BY p4.displayname;

【问题讨论】:

    标签: sql vb.net ms-access report multiple-tables


    【解决方案1】:

    您的查询的基本形式是:

    select player1, player2, count(*)
    from tblMatch m
    group by player1, player2;
    

    但是,您实际上希望游戏以两种方式 的方式进行报告。为此,您可以使用union all:

    select player1, player2, count(*)
    from (select player1, player2
          from tblMatch
          union all
          select player2, player1
          from tblMatch
         ) m
    group by player1, player2;
    

    如果您想了解有关球员的更多信息(例如他们的姓名),那么您需要加入额外的表格。

    【讨论】:

    • 谢谢,这正是我所需要的。虽然我无法理解从哪里加入以从玩家表中获取 player2 信息。我尝试了以下方法。
    • 查看原帖了解更多详情。谢谢
    【解决方案2】:

    您可以在查询中使用 group by。

    SELECT id, player, match
    FROM tables
    GROUP BY id, player, match
    

    【讨论】:

      猜你喜欢
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-17
      • 1970-01-01
      相关资源
      最近更新 更多