如何从外键表中检索值?

时间:2016-03-27 18:55:27

标签: java jdbc prepared-statement resultset

我试图获取外键表的每一列的值。所以我使用第二范式来规范我的表格,我将表格分成两部分。如下图。

1st Table

我的主键SECTION_ID在第二张表中引用SECTION_ID的第一张表。

2nd Table

这里我提供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");
             }}

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

1 个答案:

答案 0 :(得分:0)

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

选中此SQL Left JOIN

使用:js并获取所需的值