2016-03-27 2 views
1

Я пытаюсь получить значения каждого столбца таблицы внешнего ключа. Поэтому я нормализую свою таблицу, используя Вторая нормальная форма, где я разбиваю свои таблицы на две части. Рисунок ниже.Как получить значения из таблицы внешнего ключа?

1st Table

первая таблица, где мой первичный ключ SECTION_IDSECTION_ID ссылки на 2-е таблицы.

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"); 
      }} 

Мне нужно создать еще один запрос на выборку для внешнего ключа ли? Я думаю, что это не потому, что я просто хочу получить ценности. Поправьте меня если я ошибаюсь. Не стесняйтесь комментировать. Благодаря! :)

+0

Почему вы не используете присоединиться? –

ответ

0

Ключевое слово LEFT JOIN возвращает все строки из левой таблицы (таблица1) с соответствующими строками в правой таблице (таблица2). Результат равен NULL в правой части, когда нет совпадения.

Проверить это SQL Left JOIN

Использование select * from allsections_list A left outer join allsections_settings S on A.Section_ID = S.Section_ID и получить значения, которые нужно

+0

Спасибо, что он работает! – Francisunoxx

+0

Всегда приветствую. –