2017-01-06 35 views
1

我有2個talbes如下圖所示:需要有關外鍵一些幫助和選擇

CREATE TABLE topics (
    topic_id INT(11) NOT NULL AUTO INCREMENT PRIMARY KEY, 
    topic_category INT(11) NOT NULL, 
    topic_title VARCHAR(60) NOT NULL, 
    topic_content TEXT NOT NULL 
); 

CREATE TABLE categories(
    category_id INT(11) NOT NULL AUTO INCREMENT PRIMARY KEY, 
    category_name VARCHAR(30) NOT NULL 
); 

然後,我用一個外鍵,所以我可以從「類別」表中的類別鏈接topic_category。

ALTER TABLE topics ADD FOREIGN KEY(topic_category) REFERENCES categories(category_id) ON DELETE CASCADE ON UPDATE CASCADE; 

我的問題是,我如何選擇所有的主題與我選擇的caetgory?我嘗試下面的代碼,它工作正常:

SELECT * FROM topics WHERE topic_category = 2 

有沒有一種方法,使基於對於類別,而不是使用像這樣的CATEGORY_ID我的選擇? (我知道它完全錯誤的):

SELECT * FROM topics WHERE category_name = 'Technology' ; 
+1

這是最簡單的加入。你應該採取一個SQL教程 –

回答

0

您可以使用一個簡單連接:

SELECT * 
FROM topics t 
INNER JOIN categories c 
    ON t.topic_category=c.category_id 
WHERE category_name = 'Technology' ; 
+0

它工作正常。我試圖在PHP腳本中實現這一點,但我沒有得到任何行,甚至認爲我應該。難道我做錯了什麼?對不起,但我是新來的php/Mysql,我的代碼如下: $ check = mysql_query(「SELECT * FROM'topics' t INNER JOIN'categories' c ON t.topic_category = c.category_id WHERE'category_name' =' Technology'ORDER BY topic_date DESC「); 如果(mysql_num_rows($檢查)!= 0) \t { \t \t而($行= mysql_fetch_assoc($檢查)) \t \t { \t \t \t // blahblahblah \t \t} \t} – JStyle

+0

只需交一個新的問題。我想我的答案是現在。 – danihp