【问题标题】:Adding another table to this sql statement将另一个表添加到此 sql 语句
【发布时间】:2018-09-06 15:57:36
【问题描述】:

目前我有这个 sql 语句将三个表与 Players ID 联合起来,但我想更改它以便我也可以加入 playerdetails 表。下面我有

"SELECT technicaldetails.*,
                            mentaldetails.*,
                            physicaldetails.*
                    FROM    PlayerDetails
                    INNER JOIN mentaldetails ON mentaldetails.PlayerId = playerdetails.PlayerId 
                    INNER JOIN technicaldetails ON technicaldetails.PlayerId = playerdetails.PlayerId
                    INNER JOIN physicaldetails ON physicaldetails.PlayerId = playerdetails.PlayerId                       
                    WHERE playerdetails.playerID = " & DetailsPlayerID & ";"

PlayerDetails 表

PlayerID | FirstName | Lastname
-------------------------------
1        | John      | Smith

和Details表看起来类似这样

PlayerID | Corners | Crossing | BallControl|ect...
-------------------------------------------
1        | 15      | 13       | 19

【问题讨论】:

  • 这是在 MS Access 中吗?
  • 不抱歉,数据库在mysql里面,但是那个sql语句在vb里面。
  • vb Visual Basic
  • 啊 - 好的,感谢您删除标签。 (所以我假设是 VB6,而不是 VB.NET) ...我建议使用 Access 的查询编辑器来构建查询,然后切换到 SQL 视图并复制 SQL。我不确定您的设置是否仍然可以这样做(即,如果您确实具有能够连接到同一个数据库的 Access),因为,特别是对于复杂的查询,构建和测试查询要容易得多可视化编辑器。
  • 没问题,我使用 sql 工作台作为查询的可视化界面,但主要问题是我不确定如何编辑该 sql 语句以便也加入 playerdetails 表?

标签: mysql sql database


【解决方案1】:

您可以使用以下查询..

 SELECT technicaldetails.*, mentaldetails.*, physicaldetails.*,
 detailtable.* FROM PlayerDetails
 INNER JOIN mentaldetails ON mentaldetails.PlayerId =playerdetails.PlayerId 
 INNER JOIN technicaldetails ON technicaldetails.PlayerId = playerdetails.PlayerId
 INNER JOIN physicaldetails ON physicaldetails.PlayerId = playerdetails.PlayerId  
 left join detailtable on physicaldetails.PlayerId = detailtable.PlayerId                     
 WHERE playerdetails.playerID = " & DetailsPlayerID & ";

【讨论】:

  • 我可以从最后几个字符看出这是不完整的。此外,您可以通过突出显示代码并按 CTRL+K 或单击工具栏上的{ } 按钮来格式化code block..
  • 无法正常工作,我从中获取 ID 的 playerdetails 表是我要添加的表
【解决方案2】:

您只需添加新的选定列即可。您的实际查询以

开头
SELECT 
    technicaldetails.*,
    mentaldetails.*,
    physicaldetails.*
FROM
    PlayerDetails
    INNER JOIN mentaldetails ON ...
    INNER JOIN technicaldetails ON ...
    INNER JOIN physicaldetails ON ...
WHERE
    ...

请注意,您是在告诉 SQL 引擎您希望查看 technicaldetailsmentaldetailsphysicaldetails 表中的所有 (*) 列。由于您已经在 FROM 中引用了 PlayerDetails 表,因此您只需在 SELECT 上添加它的列。

SELECT
    PlayerDetails.*,
    technicaldetails.*,
    mentaldetails.*,
    physicaldetails.*
FROM
    PlayerDetails
    INNER JOIN mentaldetails ON ...
    INNER JOIN technicaldetails ON ...
    INNER JOIN physicaldetails ON ...
WHERE
    ...

最终会像下面这样:

"SELECT 
    PlayerDetails.*,
    technicaldetails.*,
    mentaldetails.*,
    physicaldetails.*
FROM    
    PlayerDetails
    INNER JOIN mentaldetails ON mentaldetails.PlayerId = playerdetails.PlayerId 
    INNER JOIN technicaldetails ON technicaldetails.PlayerId = playerdetails.PlayerId
    INNER JOIN physicaldetails ON physicaldetails.PlayerId = playerdetails.PlayerId                       
WHERE 
    playerdetails.playerID = " & DetailsPlayerID & ";"

如果您删除WHERE,您将看到所有玩家的详细信息。

"SELECT 
    PlayerDetails.*,
    technicaldetails.*,
    mentaldetails.*,
    physicaldetails.*
FROM    
    PlayerDetails
    INNER JOIN mentaldetails ON mentaldetails.PlayerId = playerdetails.PlayerId 
    INNER JOIN technicaldetails ON technicaldetails.PlayerId = playerdetails.PlayerId
    INNER JOIN physicaldetails ON physicaldetails.PlayerId = playerdetails.PlayerId ;"                       

【讨论】:

    猜你喜欢
    • 2016-02-01
    • 2017-03-02
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    相关资源
    最近更新 更多