Java 如何使用内部联接获取“下一列”值?

Java 如何使用内部联接获取“下一列”值?,java,mysql,foreign-keys,primary-key,inner-join,Java,Mysql,Foreign Keys,Primary Key,Inner Join,我已经研究了很长一段时间,似乎我误解了内部连接在MySQL中的工作方式 我有三张桌子: 用户表: 外键分别与以下两个表的PKs UniID和HousingID相关: 大学名单: 住房清单: 当然,这些FK在大学列表中是PKs UniID 我要做的是查询id、hash、UserUni和UserHousing值,即不是键。这就是我现在玩的东西: "SELECT UserTable.Hash, UserTable.UserID, UserTable.UserUni, UserTable.UserHou

我已经研究了很长一段时间,似乎我误解了内部连接在MySQL中的工作方式

我有三张桌子:

用户表:

外键分别与以下两个表的PKs UniID和HousingID相关:

大学名单:

住房清单:

当然,这些FK在大学列表中是PKs UniID

我要做的是查询id、hash、UserUni和UserHousing值,即不是键。这就是我现在玩的东西:

"SELECT UserTable.Hash, UserTable.UserID, UserTable.UserUni, UserTable.UserHousing "
        + "FROM UserTable "
        + "INNER JOIN UniversitiesList "
        + "ON UserTable.UserUni = UniversitiesList.UniID "                                        
        + "INNER JOIN HousingList " 
        + "ON UserTable.UserHousing = HousingList.HousingID "   
        + "WHERE UserTable.UserName = John"
我想检索的是类似于1、@123eq、耶鲁、宿舍1的内容,但我一直得到1、@123eq、1、1

我正在使用Java,所以我是这样得到结果的:

if (result.next()) {
    hash = result.getString(1);
    id = result.getInt(2);
    uni = result.getString(3);
    housing = result.getString(4);
}

知道我做错了什么吗?

尝试将查询更改为:

"SELECT UserTable.Hash, UserTable.UserID, UniversitiesList.UniName, HousingList.HousingName "
        + "FROM UserTable "
        + "INNER JOIN UniversitiesList "
        + "ON UserTable.UserUni = UniversitiesList.UniID "                                        
        + "INNER JOIN HousingList " 
        + "ON UserTable.UserHousing = HousingList.HousingID "   
        + "WHERE UserTable.UserName = John"

如前所述,您只需要UserTable中的列,而不是其他表。从我所能告诉你的情况来看,连接看起来还可以…

Ryan…我正在设置8分钟的警报,以将你的答案标记为正确。我不确定为什么现在不让我这样做。非常感谢你!为了教育起见,SELECT语句后面的元素应该始终来自我想要的表-对吗?是的,SELECT后面的元素用于指示结果集中需要哪些列。您需要指定它们所属的表,以便解析任何列名,也就是说,两个表可能有一个ID字段。另外,您还可以通过在语句中的表名后添加as,将表名别名为更短、更易于使用的名称。然后可以使用来标识列名。例如:从UserTable中选择U.UserID作为U,其中U.UserName='John'感谢您的回复和提示!我们将利用这一点继续前进。周末好好休息吧!
"SELECT UserTable.Hash, UserTable.UserID, UserTable.UserUni, UserTable.UserHousing "
        + "FROM UserTable "
        + "INNER JOIN UniversitiesList "
        + "ON UserTable.UserUni = UniversitiesList.UniID "                                        
        + "INNER JOIN HousingList " 
        + "ON UserTable.UserHousing = HousingList.HousingID "   
        + "WHERE UserTable.UserName = John"
if (result.next()) {
    hash = result.getString(1);
    id = result.getInt(2);
    uni = result.getString(3);
    housing = result.getString(4);
}
"SELECT UserTable.Hash, UserTable.UserID, UniversitiesList.UniName, HousingList.HousingName "
        + "FROM UserTable "
        + "INNER JOIN UniversitiesList "
        + "ON UserTable.UserUni = UniversitiesList.UniID "                                        
        + "INNER JOIN HousingList " 
        + "ON UserTable.UserHousing = HousingList.HousingID "   
        + "WHERE UserTable.UserName = John"