我有3個表格。MySQL JOIN查詢語句
而且我可以使用一些幫助放在一起JOIN查詢。
表1:作品 這是我的主表。它包含很多不同的字段,包括一個唯一的主鍵。 它包含一個「composers_id」字段 - 涉及下一個表格。
表2:作曲家 此表包含關於「作品」表中作品的作曲家的其他信息。它包含許多領域,包括一個獨特的主鍵 - 這是「工作」涉及到的ID。
表3:works_instruments 此表包含有關作品中的樂器的其他信息。 它包含唯一的主鍵。 它包含一個「works_id」字段,它與「作品」表中的唯一ID相關。 有幾行都與每個「works_id」有關 - 因爲每個工作中都有關於每個樂器的大量信息。
以下是處理: 我需要能夠在工作表中搜索結果,但只能匹配只能在works_instruments表中檢查的條件的結果。
我想是這樣的:
"SELECT
works.id,
works.title
FROM works
JOIN composers
ON works.composers_id = composers.id"
那麼是什麼,如果我只需要從作品表得到的結果 - 如果在一個相關的行「works_id」 S長笛? 「works_instruments」除「works_id」字段外還包含一個「樂器」字段,該字段可能並可能不包含「長笛」一詞。 將有許多行具有相同的「works_id」。例如:在「樂器」欄中有1行爲「長笛」,在「樂器」欄中有另一行爲「低音」。 - 等等。
如何進行查詢,以便只從作品表中獲得作品,如果涉及到長笛?
你能幫忙嗎?
預先感謝您 約翰
編輯:
這是作品表:
CREATE TABLE `works` (
`id` smallint(4) unsigned NOT NULL AUTO_INCREMENT,
`composers_id` smallint(4) unsigned NOT NULL,
`work_no` tinytext NOT NULL,
`composer_no` tinytext NOT NULL,
`composers_full_name` tinytext,
`full_title` tinytext NOT NULL,
`short_title` tinytext NOT NULL,
`alternative_titles` tinytext NOT NULL,
`remarks` text NOT NULL,
`contents` text NOT NULL,
`first_line` tinytext NOT NULL,
`full_inst_ed4_rev4` text NOT NULL,
`duration` tinytext NOT NULL,
`sourcetext` text NOT NULL,
`chor_acc_size` tinytext NOT NULL,
`youth_commentary` text NOT NULL,
`youth_category_rev` tinytext NOT NULL,
`orchestra_type` tinytext NOT NULL,
`creation_date` date DEFAULT NULL,
`master_title_opas` tinytext NOT NULL,
`short_name` tinytext NOT NULL,
`url` tinytext,
PRIMARY KEY (`id`),
KEY `composers_id` (`composers_id`),
KEY `url` (`url`(16)),
FULLTEXT KEY `keywords` (`composers_full_name`,`full_title`)
) ENGINE=MyISAM AUTO_INCREMENT=8183 DEFAULT CHARSET=utf8
這是作曲家表:
CREATE TABLE `composers` (
`id` smallint(4) unsigned NOT NULL AUTO_INCREMENT,
`composer_no` tinytext NOT NULL,
`name` tinytext NOT NULL,
`short_name` tinytext NOT NULL,
`birth_year` tinytext NOT NULL,
`death_year` tinytext NOT NULL,
`vitae` tinytext NOT NULL,
`catalog` text NOT NULL,
`classification` tinytext NOT NULL,
`comment` text NOT NULL,
`gender` tinytext NOT NULL,
`alerts` tinytext NOT NULL,
`corrected` tinytext NOT NULL,
`creation_date` date DEFAULT NULL,
`edition` tinytext NOT NULL,
`first_name` tinytext NOT NULL,
`full_name` tinytext NOT NULL,
`last_name` tinytext NOT NULL,
`modification_date` tinytext NOT NULL,
`name_accented` tinytext NOT NULL,
`short_name_accented` tinytext NOT NULL,
`vitae_accented` tinytext NOT NULL,
`url` tinytext,
PRIMARY KEY (`id`),
UNIQUE KEY `url` (`url`(16))
) ENGINE=MyISAM AUTO_
INCREMENT=1197 DEFAULT CHARSET=utf8
這是works_instruments表格:
CREATE TABLE `works_instruments` (
`works_id` smallint(4) unsigned NOT NULL,
`instruments_id` smallint(4) unsigned NOT NULL,
`number` tinyint(3) unsigned NOT NULL,
`numbertext` tinytext NOT NULL,
`detail` tinytext NOT NULL,
`printout` tinytext NOT NULL,
`editable` tinytext NOT NULL,
UNIQUE KEY `works_instruments` (`works_id`,`instruments_id`),
KEY `works_id` (`works_id`),
KEY `instruments_id` (`instruments_id`),
KEY `number` (`number`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
( 「instruments_id」 是我以前被稱爲 「樂器」)
是'works_instruments'很好的定義,還是它是一個非標準化的混亂? '儀表'在哪裏,所以'wi'表是一個結點表概念 – Drew
我懷疑這個問題可能會更加冗長,但我不知道如何。 – Strawberry
我建議你用每個xxx的'show create table xxx'來顯示你的模式,所以在你充滿東西之前,peeps可以給它一個友好的審查。完了,走吧。關閉投票記錄。開始輸入 – Drew