2016-10-19 8 views
0

データベースにjava GUIを接続するアドレス帳アプリケーションを作成する必要がありました。私は今私の検索ボタンに取り組んでいて、ほとんどそれを持っていますが、4つのテーブルすべてをどのように接続するかを理解できません。私は姓で検索する必要がありますし、その人からのすべての関連情報を表示したいと思います。INNER JOIN 4テーブルの使い方は?

enter image description here

は、これまでのところ、これは私が持っているもので、それが動作しているようだが、私はINNERしようとしたとき、私は構文エラーを取得emailAddressesと電話番号を登録しよう。

resultSet = 
    statement.executeQuery("SELECT * FROM names INNER JOIN addresses ON names.personID = addresses.personID WHERE lastName LIKE '%" + last + "%' "); 
      resultSet.next(); 
      jTextField1.setText(resultSet.getString("firstName")); 
      jTextField2.setText(resultSet.getString("lastName")); 
      jTextField3.setText(resultSet.getString("address1")); 
      jTextField4.setText(resultSet.getString("address2")); 
      jTextField5.setText(resultSet.getString("city")); 
      jTextField6.setText(resultSet.getString("state")); 
      jTextField7.setText(resultSet.getString("zipcode")); 
      jTextField8.setText(resultSet.getString("phoneNumber")); 
      jTextField9.setText(resultSet.getString("emailAddress")); 
+0

質問を編集し、サンプルデータと望ましい結果を提供する必要があります。私は、あなたが本当に望んでいるものが「JOIN」だとは思っていません。 –

+0

複数のテーブルに参加するだけであれば、Googleには多数のチュートリアルが存在します。 – Esty

答えて

2

あなたは括弧を追加し、*を使用する必要がありますワイルドカードとして%ではなく
私がテストしていませんが、これは動作するはずです:

"SELECT  * 
FROM ((names INNER JOIN addresses ON names.personID = addresses.personID) 
       INNER JOIN emailadresses ON names.personID = emailadresses.PersonID) 
       INNER JOIN PhoneNumbers ON names.PersonID = PhoneNumbers.PersonID 
WHERE lastName LIKE '*" & last & "*'" 

それが動作するはずと言って - 任意の姓にアポストロフィをエスケープすることを忘れないでください。
Escaping ' in Access SQL

+0

ありがとう!私はほとんど私のように感じている今私は無効なCURSOR状態エラーを取得しています –

+0

私は '&'を追加できませんでしたコンパイルエラーが悪いオペランドタイプとして –

+0

私はそれを得ました!どうもありがとうございます! –

0
SELECT * FROM names A 
INNER JOIN address B ON A.personID = B.personID 
INNER JOIN emailAddress C ON A.personID = C.personID 
INNER JOIN phoneNumbers D ON A.personID = D.personID 
+1

このコードは問題の解決に役立つかもしれませんが、_why_および/または_how_が質問に答えているとは説明していません。この追加の文脈を提供することは、長期的な教育的価値を大幅に改善するだろう。どのような制限や仮定が適用されるかなど、あなたの答えを解説してください。 –

0

4つのテーブルを結合すると、一つのテーブルに参加したり、より多くのテーブルの結合と同じであり、このSQLコマンドを試してみてください。

SELECT firstName, lastName, address1, address2, city, state, zipcode, phoneNumber, emailAddress FROM names INNER JOIN addresses ON names.personID = addresses.personID INNER JOIN emailadresses ON names.personID = emailadresses.PersonID INNER JOIN PhoneNumbers ON names.PersonID = PhoneNumbers.PersonID WHERE lastName LIKE '%parameter%'

+0

私はこれを試しましたが、何らかの理由で文法エラーが発生しています。その私は狂った私はなぜそれをやっているのか分からない。 ACCESS DATABSE(演算子がありません)というエラーが表示され、select文が5回チェックされ、すべてが正常に表示されます。 –

+0

文字数に制限がありますか?たとえば、NVARCHAR(200)を大きな値NVARCHAR(4000)に設定する必要がありますか?ちょうど推測! – Zeina