首先我想道歉以防這是一個已知和回答的問題,但英語不是我的母語,我不知道如何甚至搜索這樣的問題。所以在這裏。SQL查詢和結果
我有一個名爲電影的表。此表包含關於電影的信息。電影的導演和作家也是我的商店信息。但是導演和作家都是多值屬性。作爲多值,他們應該被存儲在新的表格中,但是那些表格將與電影表格有多對多的關係,所以我製作了四張新的表格。
總監 - >導演 - >電影 作家 - >寫 - >電影
[導演]和[作家]持有的名字lastanames和ID爲關鍵屬性。 [定向],[寫道]保存導演和作家表格的ID鍵以及電影表中的鍵。
當我問導演(S)和作家(S)的名稱爲特定的影片(其中有3名董事及2個作家),結果我得到的是像::
D.Name D.Lastname W.Name W.Lastname
----------------------------------------------
Jan Kounen Stanley Kubric
Albert Hughes Stanley Kubric
Len Wiseman Stanley Kubric
Jan Kounen Alan Moore
Albert Hughes Alan Moore
Len Wiseman Alan Moore
如果我使用聯合查詢我可以得到我想要的五個名字,但不能以某種方式理解誰是導演,誰是作家。
Jan Kounen
Albert Hughes
Len Wiseman
Stanley Kubric
Alan Moore
但都列爲導演。
所以我的問題是,我的設計是否有缺陷?我的查詢錯誤了嗎?有沒有辦法讓董事和作家在沒有多個回覆的情況下使用一個查詢?
預先感謝您。
編輯::::
謝謝大家的回覆。
我試圖上傳一個圖像的關係,但它不會讓我。 因此,這裏是有問題
CREATE TABLE IF NOT EXISTS `Red_Apple_storeDB`.`directed_by` (`Direc_id` INT(11) NOT NULL ,
`Db_Title` VARCHAR(50) NOT NULL ,
PRIMARY KEY (`Direc_id`, `Db_Title`) ,
INDEX `fk_Director_has_Movie_Movie1_idx` (`Db_Title` ASC) ,
INDEX `fk_Director_has_Movie_Director1_idx` (`Direc_id` ASC) ,
CONSTRAINT `fk_Director_has_Movie_Director1`
FOREIGN KEY (`Direc_id`)
REFERENCES `Red_Apple_storeDB`.`director` (`D_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Director_has_Movie_Movie1`
FOREIGN KEY (`Db_Title`)
REFERENCES `Red_Apple_storeDB`.`movie` (`MV_Title`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
CREATE TABLE IF NOT EXISTS `Red_Apple_storeDB`.`director` (`D_Name` VARCHAR(50) NOT NULL ,
`D_lastname` VARCHAR(45) NOT NULL ,
`D_id` INT(11) NOT NULL ,
PRIMARY KEY (`D_id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
CREATE TABLE IF NOT EXISTS `Red_Apple_storeDB`.`movie` (`MV_Title` VARCHAR(50) NOT NULL ,
`MV_Release_Date` DATE NOT NULL ,
`MV_Cost` BIGINT(20) NOT NULL ,
`St_Name` VARCHAR(50) NOT NULL ,
PRIMARY KEY (`MV_Title`) ,
INDEX `fk_Movie_Studio1_idx` (`St_Name` ASC) ,
CONSTRAINT `fk_Movie_Studio1`
FOREIGN KEY (`St_Name`)
REFERENCES `Red_Apple_storeDB`.`studio` (`ST_Name`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
CREATE TABLE IF NOT EXISTS `Red_Apple_storeDB`.`writen_by` (`Writ_id` VARCHAR(45) NOT NULL ,
`Wb_Title` VARCHAR(50) NOT NULL ,
PRIMARY KEY (`Writ_id`, `Wb_Title`) ,
INDEX `fk_Writer_has_movie_movie1_idx` (`Wb_Title` ASC) ,
INDEX `fk_Writer_has_movie_Writer1_idx` (`Writ_id` ASC) ,
CONSTRAINT `fk_Writer_has_movie_Writer1`
FOREIGN KEY (`Writ_id`)
REFERENCES `Red_Apple_storeDB`.`writer` (`W_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Writer_has_movie_movie1`
FOREIGN KEY (`Wb_Title`)
REFERENCES `Red_Apple_storeDB`.`movie` (`MV_Title`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
CREATE TABLE IF NOT EXISTS `Red_Apple_storeDB`.`writer` (`W_Name` VARCHAR(50) NOT NULL ,
`W_Lastname` VARCHAR(45) NULL DEFAULT NULL ,
`W_id` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`W_id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1
的一個電影我詢問表的代碼中,有3名董事和2個作家。
我的查詢::
select d_name, d_lastname,d_id
from director, movie,directed_by
where mv_title = 'from hell'
and mv_title = db_title
and direc_id = d_id
union all
select w_name, w_lastname,w_id
from movie, writer, writen_by
where mv_title = 'from hell'
and mv_title = wb_title
and writ_id = w_id
有這樣的問題,總是提供樣本記錄與期望的結果':D'歡迎計算器! –
特別展示你的電影之間的關係,導演表:) – bonCodigo