2012-08-02 45 views
0

所以這是我想解決的問題。SQL一對多?

Category(CatID(PK), CatName,....) 
Writer(wtrID(PK), CatID(FK), wtrName,....) 
Report(rpID(PK), title) 
Authors(rpID(FK),wtrID(FK)) 

如何創建一個列表來顯示來自正好3種不同類別的作者報告的標題?

+3

三個特定類別?或*任何*三類,只要它們不同?你是否只需要報告列表或其他信息(如作者和類別等),如果是,則需要採用何種格式。最後,SQL有很多種變體,你可以使用它們? *(MySQL,SQLite,MS SQL Server,Oracle等?)* – MatBailie 2012-08-02 10:27:46

+0

你需要作者表的任何理由? FK表通常用於多對多的關係。您可以直接從The Report表中引用Writer表。 – LukeP 2012-08-02 10:28:15

+0

也許:select .... from .... join .... on .... where? – wildplasser 2012-08-02 10:28:40

回答

3
select r.title, group_concat(w.wtrID) as writer_ids 
from Reports r 
inner join Authors a on a.rpID = r.rpID 
inner join Writer w on w.wtrID = a.wtrID 
inner join Category c on c.CatID = w.CatID 
group by r.title 
having count(distinct c.CatID) = 3 
+0

OP的評論現在顯示需要包括編寫報告的作者的「wtrID」。 *(但接下來的評論讓我覺得這實際上並不是必需的。)* – MatBailie 2012-08-02 10:35:13

+0

謝謝Juergen和其他幫助過的人! :D – Hotmama 2012-08-02 10:49:22

+0

@ user1571007感謝本網站上的某個人的方式是接受答案(通過點擊答案左側的檢查)和/或提出答案。 – fancyPants 2012-09-26 11:36:14