我已经阅读了大量的帖子、书籍、观看的视频等,但 SQL JOINS 对我来说从来没有任何意义...... =/
所以这是交易...
三张表:
CREATE TABLE IF NOT EXISTS `feature` (
`feature_id` INT NOT NULL AUTO_INCREMENT ,
`title` VARCHAR(45) NOT NULL ,
`description` TEXT NOT NULL ,
PRIMARY KEY (`feature_id`) )
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `requirement` (
`requirement_id` INT NOT NULL AUTO_INCREMENT ,
`title` VARCHAR(45) NOT NULL ,
`description` TEXT NOT NULL ,
PRIMARY KEY (`requirement_id`) ,
UNIQUE INDEX `title_UNIQUE` (`title` ASC) )
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `feature_requirement` (
`fk_feature_id` INT NOT NULL ,
`fk_requirement_id` INT NOT NULL ,
PRIMARY KEY (`fk_feature_id`, `fk_requirement_id`) ,
INDEX `fk_feature_requirement_requirement1` (`fk_requirement_id` ASC) ,
INDEX `fk_feature_requirement_feature1` (`fk_feature_id` ASC) )
ENGINE = InnoDB;
一些功能可能有多个要求,而一些功能将有相同的要求(即,相同的要求适用于多个功能)因此,第三个表用于多对可能关系。
我希望能够选择特定功能的所有要求(通过 feature_id),我正试图将其变成一个 VIEW。
在大量关于“未知列”和“非唯一别名”的错误消息之后;我终于得到了这个工作:
CREATE VIEW `project_feature_requirement` AS
SELECT r.*
FROM `requirement` `r`
INNER JOIN `feature_requirement` `fr`
on `r`.`requirement_id` = `fr`.`fk_requirement_id`
INNER JOIN `feature` `f`
on `fr`.`fk_feature_id` = `f`.`feature_id`
但是,这只给了我对 SELECT 的需求 ID、标题和描述。……没用的
我有四个其他视图要创建,它们将是相同类型的查询。
任何帮助将不胜感激!
是否有任何免费程序可以查询我的架构并通过“向导”或其他方式运行我以指定我想要哪些表/列以及我想要选择哪些列并为我构建查询???也许我终于可以弄清楚是否可以使用这样的实用程序。
再次感谢!托德