2017-01-06 2 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; 

Мой вопрос в том, как я могу выбрать все темы с помощью моей выборки? У меня попробовать этот код и он работает отлично:

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' themes' t INNER JOIN 'categories' c ON t.topic_category = c.category_id WHERE' category_name' = ' Технология «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

Смежные вопросы