【问题标题】:Error in acessing results in a relational database访问关系数据库中的结果时出错
【发布时间】:2013-01-29 05:55:50
【问题描述】:

我有一个表格设置如下

我正在尝试编写一个查询来返回状态=1 确认=1 和用户ID=指定的结果。我希望结果显示用户 ID、与该用户 ID 关联的名称、好友 ID 以及与该好友 ID 关联的名称。到目前为止,按照网络上的教程,我提出了以下查询

SELECT `freinds.User ID`, `freinds.Freind ID`, `users.User`, `users.User` FROM `freinds` WHERE `User ID`= 6 INNER JOIN `users` on `users.ID`=6 AND `users.ID`=`freinds.Freind ID`

但是,我收到此查询的 sql 错误。我认为我应该做的是两次内部加入用户表,但我不确定如何去做

【问题讨论】:

    标签: mysql sql select join


    【解决方案1】:

    问题是您将表名和列名与反引号作为一个整体进行了包装。您需要将其分开,或者如果名称不在“MySQL 保留关键字”上,请删除反引号。

    您还需要加入表User 两次,以便获取表Freinds 上每个ID 的名称。

    SELECT  a.`User ID`, 
            a.`Freind ID`, 
            b.User FriendName,
            c.User UserName
    FROM    `freinds` a
            INNER JOIN `users` b 
                ON b.ID = a.`Freind ID`
            INNER JOIN users c
                ON c.id = a.`user ID`
    WHERE   `User ID`= 6 
    

    作为旁注,如果ID 之一是可为空的,则LEFT JOININNER JOIN 更受欢迎。

    要全面了解联接,请访问以下链接:

    【讨论】:

    • 非常感谢。一秒钟解决了我的问题。并感谢您的链接
    • 我想知道您能否向我解释一下为什么以及如何使用“a”、“b”和“c”?
    • 他们被称为ALIAS。当您有较长的难以键入的表名时,它们会很有帮助。因此,您可以使用 ALIAS 代替表名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多