2017-01-06 31 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