2017-06-06 118 views
0

我正在編寫SQL語句,並且在加入兩個表時我們遇到問題(我們稱之爲表註冊&產品)在表格註冊的列StudentID的外鍵列上。 StudentID是從變量$ StudentID中讀取的。選擇加入表A和表B,同時根據表A的外鍵顯示錶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語句到目前爲止,我已經出來,並有麻煩:

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

如果$ StudentID是5.我希望它顯示與StudentID 5關聯的ProductID中的所有項目。在這種情況下,Product A和Pr輸出B將是輸出。

+1

聽起來好像'Enrollment'是[**橋接表**](https://en.wikipedia.org/wiki/Associative_entity),以及'StudentID'被來自**第三張桌子(「學生」)。您還需要加入該表格:) –

+0

是的,它來自第三個表格。但是該表中沒有使用列,而只使用了「StudentID」。我不熟悉加入三張表。 –

+1

如果你不顯示第三張表中的數據,那麼你仍然**使用** ID將這兩張表「關聯」在一起。要將三個表連接在一起,您基本上只需要在末尾(在「註冊」和「學生」之間)添加另一個「JOIN」。這裏是[**一些例子**](https://stackoverflow.com/questions/3709560/mysql-join-three-tables)來幫助那個:) –

回答

1

通過閱讀你的SQL代碼,我假設你使用PHP來生成sql查詢。如果想要在PHP中包含字符串內的變量值,請使用{$variable}。你必須先加入表格,然後應用條件。使用下面的查詢,

"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, p.productdate 對於入選Ë RIGHT JOIN的productTable p ON e.productid = p.productid WHERE e.studentid = @StudentID

相關問題