如何从外键表中检索值?

Posted

技术标签:

【中文标题】如何从外键表中检索值?【英文标题】:How to retrieve values from Foreign Key table? 【发布时间】:2016-03-27 18:55:26 【问题描述】:

我正在尝试获取外键表的每一列的值。所以我使用 Second Normal Form 将表格一分为二。下图。

第一个表,我的主键是SECTION_ID,在第二个表中引用SECTION_ID

在这里我提供SECTION_NAME 的值以搜索记录是否存在。如果用户输入现有记录,我想做什么我想获取外键表的所有值。我将如何做?

代码

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)                                          
    String searchSection = Section_SearchSection_Textfield.getText();
    String searchStudentLimit = Section_Student_Limit_ComboBox.getSelectedItem().toString();

    String searchSECTION_NAME = "SELECT * FROM allsections_list WHERE SECTION_NAME = ?";

    try (Connection myConn = DBUtil.connect();
             PreparedStatement myFirstPs = myConn.prepareStatement(searchSECTION_NAME);)
        
             myFirstPs.setString(1, searchSection);

             try (ResultSet myRs = myFirstPs.executeQuery())
             
                 int resultCounter = 0;
                 while (myRs.next())
                 
                     String mySectionName = myRs.getString(2);//Get the value of SECTION_NAME
                     Section_SectionName_TextField.setText(mySectionName);
                     Section_SectionName_TextField.setEnabled(true);
                     resultCounter++;
                 
                 if (resultCounter == 1)//If exist
                 
                     JOptionPane.showMessageDialog(null, "Data Found");
                 
                 else//If not exist
                     JOptionPane.showMessageDialog(null, "No Data Found");
             

我是否需要为外键创建另一个选择查询?我认为不是,因为我只是想获得价值。如我错了请纠正我。随意发表评论。谢谢! :)

【问题讨论】:

你为什么不使用 join ? 【参考方案1】:

LEFT JOIN 关键字返回左表 (table1) 中的所有行,以及右表 (table2) 中的匹配行。不匹配时,右侧结果为NULL。

查看SQL Left JOIN

使用select * from allsections_list A left outer join allsections_settings S on A.Section_ID = S.Section_ID 并获取您需要的值

【讨论】:

以上是关于如何从外键表中检索值?的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver外键关系有啥用?

谈谈mysql的主键和外键

如何在 Laravel 中从外键中查看表字段

如何在有外键关系的表中删除数据

关于 主键和外键

SQL怎么在有外键的主键表中插数据