2017-06-06 13 views
0

私はSQL文を書く途中ですが、両方のテーブルに参加することに問題があります。(Table Enrollment & Product)ベース表Enrollmentの列StudentIDからの外部キー列に追加します。 StudentIDは、変数$ StudentIDから読み取られます。Table Aの外部キーに基づいてテーブルBの項目を表示しているときにJoin Table AとTable Bを選択する

登録テーブル

+--------------+-----------+-----------+ 

| EnrollmentID | StudentID | ProductID | 

+--------------+-----------+-----------+ 

| 1   | 5   | 1   | 

| 2   | 5   | 2   | 

|3    | 7   | 2   | 

|4    | 7   | 3   | 

|5    | 9   | 5   | 

+--------------+-----------+-----------+ 

製品表

+-----------+-------------+------------+ 

| ProductID | ProductName | ProductDate| 

+-----------+-------------+------------+ 

|1   | ProductA | 1/1/2017 | 

|2   | ProductB | 1/2/2017 | 

|3   | ProductC | 1/3/2017 | 

|4   | ProductD | 1/4/2017 | 

+-----------+-------------+------------+ 

これは、これまでのところ、私が出てくるとのトラブル持つきたSQL文です:$ StudentIDがある場合

"SELECT product.ProductName, product.ProductDate 
           FROM enrollment WHERE StudentID = '$StudentID' 
           RIGHT JOIN product ON enrollment.productid = product.productid"; 

を5. StudentID5に関連付けられているProductIDのすべてのアイテムを表示します。この場合、Product AとPr産物Bが産物となる。

+1

、以下のクエリを使用します(https://en.wikipedia.org/wiki/Associative_entity)、および' StudentID'があること**第3テーブルから来ています( '学生'?)。また、そのテーブルにも参加する必要があります:) –

+0

はい、それは3番目のテーブルからです。しかし、そのテーブルではなく、「StudentID」のみが使用されます。私は3つのテーブルを結合することに慣れていない。 –

+1

3つ目のテーブルのデータを**表示していない場合でも、** IDを使用して2つのテーブルを一緒に '関連付ける'ことはできます。 3つのテーブルを結合するには、最後に 'Enrollment'と' Student'の間に別の 'JOIN'を追加するだけです。それを助けるための[**いくつかの例**](https://stackoverflow.com/questions/3709560/mysql-join-three-tables)があります:) –

答えて

1

ON producttable P を登録しようPHPを使用してSQLクエリを生成すると仮定します。文字列の中に変数値を含める場合は、{$variable}を使用してください。そして、まずテーブルに参加してから条件を適用する必要があります。 [** **ブリッジングテーブル] `Enrollment`があるかのようですね

"SELECT product.ProductName, product.ProductDate FROM enrollment inner join student ON enrollment.studentid = student.studentid RIGHT JOIN product ON enrollment.productid = product.productid WHERE enrollment.StudentID = '{$StudentID}' " 
1

DECLARE @StudentID INT = 5;

SELECT p.productname、入学Eから p.productdate RIGHT私は、あなたのSQLコードを読み取ることによりe.productid = p.productid WHERE e.studentid = @StudentID

関連する問題