在table1中获取一行,在table2中获取一行中的两行或更多行

时间:2017-06-07 15:39:57

标签: mysql sql

我是新手。假设数据库中有2个表:

表1:锦标赛

+------------+----------+---------+----------+
|    id      |  format  |  Size   |  host    |
+------------+----------+---------+----------+
|     7      |  Single  |   9     |  Daniel  |
|     8      |  Single  |   4     |  Oscar   |
+------------+----------+---------+----------+

表2:匹配

+------------+----------+-------------+----------+----------+
|    id      |  player  |  position   |  score   |  winner  |
+------------+----------+-------------+----------+----------+
|     7      |  Arturo  |     0       |    3     |    1     |
|     7      |  Pablo   |     1       |    2     |    0     |
|     8      |  Ale     |     0       |    1     |    0     |
|     8      |  Maria   |     1       |    5     |    1     |
+------------+----------+-------------+----------+----------+

现在我想获得ID为7和8的主机,大小,赢家,玩家,得分。你知道如何获得以下结构吗?:

[ Host:Daniel, size: 9, [ winner:1, player: Arturo, Score: 3], [winner:0, player: Pablo, Score: 2]], [host:Óscar, size:4,[winner:0, player: Ale, Score:0],....

提前致谢:)

1 个答案:

答案 0 :(得分:0)

使用JOIN Syntaxid字段加入表格:

SELECT
  host, size, winner, player, score
FROM 
  tournaments INNER JOIN matchs USING (id);

如果要选择仅包含特定id的行,请使用WHERE子句。在您的情况下,在分号之后追加查询:

WHERE `id` IN (7, 8)

注意,MySQL无法创建复杂的对象。 SELECT仅返回行集。要将返回的数据集转换为结构,请使用服务器端平台的外部工具:C,C ++,C#,VB.NET,Python,PHP等。