如何从外键表中检索值?
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
并获取您需要的值
【讨论】:
以上是关于如何从外键表中检索值?的主要内容,如果未能解决你的问题,请参考以下文章