THAT構建表的SQL關係ID的,MySQL查詢的幫助下,使用來自另一個表
--
-- Table structure for table `careers`
--
CREATE TABLE IF NOT EXISTS `careers` (
`career_id` int(11) NOT NULL auto_increment,
`career_name` varchar(75) NOT NULL,
`career_desc` text NOT NULL,
`degree_needed` enum('Yes','No') NOT NULL,
`useful_info` text,
`useful_links` text,
PRIMARY KEY (`career_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=34 ;
-- --------------------------------------------------------
--
-- Table structure for table `course`
--
CREATE TABLE IF NOT EXISTS `course` (
`course_id` int(11) NOT NULL auto_increment,
`course_type` varchar(75) NOT NULL,
`course_names` text NOT NULL,
`extra_needed` enum('Yes','No') default NULL,
`course_link` varchar(150) NOT NULL,
`grades_grade_id` int(11) NOT NULL,
PRIMARY KEY (`course_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=87 ;
-- --------------------------------------------------------
--
-- Table structure for table `grades`
--
CREATE TABLE IF NOT EXISTS `grades` (
`grade_id` int(11) NOT NULL auto_increment,
`grade_desc` text NOT NULL,
`careers_career_id` int(11) NOT NULL,
PRIMARY KEY (`grade_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=87 ;
-- --------------------------------------------------------
我的表背後的理論概述,從表中獲取值是每個等級與職業生涯相關聯,一個職業可以有很多等級,從一門課程只與一門課程相關,但如果用戶選擇的課程沒有得到足夠的認證,用戶可能需要額外開設一門課程。
所以我的問題是如何選擇的更高水平的課程過程中的細節,如果用戶選擇了一個較低的水平當然,
例如用戶希望成爲一名電工,他們有2個d等級這意味着他們只能參加2級課程,這意味着要完成課程,他們必須參加更高水平的課程。我需要能夠顯示其他課程是基於他們選擇電工和二級課程的事實,值得注意的是,需要額外工作的課程有一個標記爲「是」的字段「extra_needed」。
我不能活或我的工作如何得到正確的數據出來,我曾嘗試以下,
SELECT *
FROM `course` , `grades` , `careers`
WHERE `course`.`extra_needed` IS NULL
AND `grades`.`grade_id` = `careers`.`career_id`
AND `careers`.`career_id` =6
然而這帶回59行數據的地方,因爲它應該帶回2行的數據,另一個用戶可以選擇的數據行,如果他們選擇其他成績選擇。
你需要回答的一些問題:(1)你如何獲得與career_id爲6的職業相關的課程表的所有行的列表? (2)grade_id與career_id有什麼關係?你爲什麼加入這個領域的兩張桌子? (3)課程表如何與成績表相關聯? – 2010-09-06 16:17:46
看起來你可能是SQL新手?我認爲你在這裏需要的是JOIN,而不是像這樣從多個表中選擇。 – aceofspades 2010-09-10 22:42:01