2014-02-18 29 views
0

(對不起,我的英文不太好) 嗨,我正在嘗試學習如何在MySQL中使用連接表,並且我無法確定如何執行某些操作。我知道MySQL的基礎知識,但我從未使用過「JOIN」。MySQL中的連接表

在這個測試項目中,我希望能夠在頁面上顯示給定類別的應用程序(點擊「遊戲」,只有在「遊戲」類別中的應用程序將顯示在頁)。我想知道SQL請求應該是什麼樣子。

第二個問題,讓我們說一個應用程序可以適應2個不同的類別,我怎麼能設法給我的數據庫中的應用程序2不同的Category_ID?

這裏是我的數據庫看起來像此刻:

表名:APPS

+------------+-------------------+ 
| App_ID (pk)|  App_Name  | 
+------------+-------------------+ 
| 1  | Weather Network |     
| 2  | Is it sunny 2.0 |       
| 3  | The Weather App | 
| 4  | Zelda   | 
| 5  | Megaman   | 
| 6  | Doom 3   |         
+------------+-------------------+ 

表名:類別

+-----------------+-----------------+ 
| Category_ID (pk)| Category_Name | 
+-----------------+-----------------+ 
|  1   |  Games  |     
|  2   |  Weather  |              
+-----------------+-----------------+ 

表名:JUNCTION_APP_CATEGORY

+----------------+--------------------+ 
| APP_ID (pk) | Category_ID (pk) | 
+----------------+--------------------+ 
|  1   |  2   |     
|  2   |  2   | 
|  3   |  2   |     
|  4   |  1   | 
|  5   |  1   |     
|  6   |  1   |              
+----------------+--------------------+ 
+0

如果用戶輸入是類別(Caategory_ID),那麼所有的APPS與該類別可以檢索。你想要查詢嗎? –

+0

http://en.wikipedia.org/wiki/Join_%28SQL%29 –

+0

是的,我希望能夠選擇一個類別並查看該類別中的所有應用程序 – abouletcouture

回答

1

關於第一個問題,答案是

SELECT a.*, c.* 
FROM APPS a, CATEGORY c, JUNCTION_APP_CATEGORY ac 
WHERE a.App_ID=ac.APP_ID 
    AND c.Category_ID=ac.Category_ID 
    AND ac.Category_ID=<category_id for category "Games"> 

關於第二個問題,你可以同時使用APP_IDCategor_ID如表JUNCTION_APP_CATEGORY的主鍵(注意不是兩個PKS,但使用兩列聯爲一體PK )。所以你可以把這樣的數據:

+----------------+--------------------+ 
| APP_ID (pk) | Category_ID (pk) | 
+----------------+--------------------+ 
|  1   |  1   |  <-- APP_ID=1 belongs to both cat 1 & 2   
|  1   |  2   |     
|  2   |  2   | 
|  3   |  2   |     
|  4   |  1   | 
|  5   |  1   |     
|  6   |  1   |              
+----------------+--------------------+ 
+0

謝謝!這正是我所期待的。你是什​​麼意思:「一起使用兩列作爲一個PK」? – abouletcouture

+0

選擇兩列,然後在表上創建主鍵。不要嘗試在'app_id'上創建pk,然後在'category_id'上創建另一個pk(實際上數據庫不允許你這麼做)。 – charlee

+0

好吧,我會嘗試在PHPMyAdmin – abouletcouture