2
我有一個問題表,其中包含與特定用戶提交的答案對應的行的唯一問題和答案表。我想要做的是創建一個查詢,爲每個問題返回一行,幷包含登錄用戶的答案。如果用戶還沒有回答問題,答案欄應該爲該問題顯示NULL。查詢必須爲每個問題返回一行,而不管用戶是否回答了該問題,並且不應返回任何其他用戶的答案。這個結果集是可能的左或右連接?
這裏是我的表:
CREATE TABLE IF NOT EXISTS `questions` (
`id` int(10) unsigned NOT NULL auto_increment,
`question` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `answers` (
`fb_user` int(3) unsigned NOT NULL,
`question_id` int(10) unsigned NOT NULL,
`answer` text NOT NULL,
UNIQUE KEY `fb_user` (`fb_user`,`question_id`)
) ENGINE=InnoDB;
目前我使用兩個查詢,使這項工作:
CREATE TEMPORARY TABLE answers_f SELECT * from answers WHERE fb_user = '$fb_profile_id'
SELECT questions.*, answers_f.* FROM answers_f RIGHT JOIN questions ON questions.id = answers_f.question_id ORDER BY questions.id
問題?有沒有辦法只用一個左或右連接查詢,可能是一個子查詢或多個連接,而不必像上面所做的那樣創建臨時表?
完美。你確切地把問題掛鉤了。我在你的解決方案中使用了WHERE而不是AND。謝謝! – Snazawa