我正在爲論壇創建一個簡單的數據庫。我有一個欄目表forum_categories
看起來像這樣:爲多個值編寫一個SQL查詢
`cat_id` INT(8) NOT NULL AUTO_INCREMENT,
`cat_title` VARCHAR(255) NOT NULL,
`cat_desc` TEXT NOT NULL,
PRIMARY KEY (`cat_id`),
UNIQUE KEY (`cat_title`)
而一個主題表forum_topics
看起來像這樣:
`topic_id` INT(8) NOT NULL AUTO_INCREMENT,
`cat_id` INT(8) NOT NULL COMMENT 'foreign key with forum_categories table',
`user_id` INT(11) NOT NULL COMMENT 'foreign key with users table',
`topic_title` VARCHAR(255) NOT NULL,
`topic_desc` TEXT NOT NULL,
`topic_date` DATETIME DEFAULT NULL,
PRIMARY KEY (`topic_id`),
FOREIGN KEY (`cat_id`) REFERENCES forum_categories (`cat_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='forum topics';
現在,當我選擇產品分類我只是想的主題展示,其中cat_id字段彼此相等。
實施例:
第1類具有CAT_ID = 1
類別2具有CAT_ID = 2
主題1具有CAT_ID = 1
主題2具有CAT_ID = 2
現在當選擇類別1時,我只想要顯示主題1。如果選擇category2,我只想要顯示topic 2。
這個查詢實現了:
SELECT *
FROM forum_categories fc
JOIN forum_topics ft ON fc.cat_id = ft.cat_id
WHERE fc.cat_id = 1
ORDER BY ft.topic_date DESC
現在,我想不必針對每個類別的一個查詢,如果這是可能的。試圖做到這一點:
SELECT *
FROM forum_categories fc
JOIN forum_topics ft ON fc.cat_id = ft.cat_id
WHERE fc.cat_id = ft.cat_id
ORDER BY ft.topic_date DESC
或本:
SELECT *
FROM forum_categories fc
JOIN forum_topics ft ON fc.cat_id = ft.cat_id
ORDER BY ft.topic_date DESC
顯示主題1和2兩個類別。有沒有辦法爲所有類別提供一個查詢?
而不是使用「using」用於適當的別名,如fc.cat_id = ft.cat_id – SMA 2014-10-26 16:09:59
什麼是別名? – Schwesi 2014-10-26 16:12:09
類似於SELECT * FROM forum_categories fc JOIN forum_topics ft on fc.cat_id = ft.cat_id ORDER BY ft.topic_date DESC – SMA 2014-10-26 16:13:56