【问题标题】:Combine multiple tables in MySQL for View在 MySQL 中合并多个表以查看
【发布时间】:2016-02-22 16:28:44
【问题描述】:

下面是我用来尝试从 3 个表创建视图的代码。我收到一个错误“错误代码 1052 fighterID 不明确”。这是我尝试创建的第一个视图,我无法辨别我做错了什么以正确填充视图。

CREATE VIEW championsList AS (
SELECT champions.fighterId, fighters.fighterId, weightClasses.weightClassId, fighters.firstName, fighters.LastName, weightClasses.weightClass
FROM champions, fighters
INNER JOIN fighters champions
ON
champions.fighterId = fighters.fighterId
INNER JOIN champions weightClasses
ON
champions.weightClassId=weightClasses.weightClass



fighters
1 Frank Smith 
2 Fred  Lewis

champions
1 2
2 1

weightClasses
1 heavyweight
2 bantemweight

ChampionsList
Frank Smith bantemweight
Fred Lewis Heavyweight

【问题讨论】:

    标签: mysql join view


    【解决方案1】:

    为各自表中名为 fighterId 的两列提供别名:

    CREATE VIEW championsList AS (
        SELECT champions.fighterId AS c_fighterId, fighters.fighterId AS f_fighterId,
            weightClasses.weightClassId, fighters.firstName, fighters.LastName,
            weightClasses.weightClass
        FROM champions INNER JOIN fighters
            ON champions.fighterId = fighters.fighterId
        INNER JOIN weightClasses
            ON champions.weightClassId = weightClasses.weightClass
    )
    

    我还将您的查询清理为我认为您的意图。

    【讨论】:

    • 所以这创建了视图 - 但是视图没有填充任何数据。我正在尝试使用冠军表 - 与战士表相关联以撤回战士名称。我不包括什么?
    • 您的查询是否有可能没有返回任何内容,或者至少没有返回您所期望的?你能自己测试查询来检查这个吗?
    • 它没有返回任何东西。以下是我想要完成的事情 - 我似乎无法将拼图拼凑在一起以实现它
    • 我编辑了这个问题来展示我想要做的一个例子。
    • 恐怕您可能对视图在 MySQL 中的作用感到困惑。视图实际上只不过是一个临时表,与您的其他表存在于相同的命名空间中。因此,在您的问题中,您可以想象从查询中获取输出,并将其粘贴到名为championsList 的表中。查询未输出的任何内容都不会为您提供所需的输出,至少在不做更多工作的情况下不会(这是另一个问题)。
    猜你喜欢
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    相关资源
    最近更新 更多