總而言之,我有幾家公司擁有多個站點和多個部門。每個部門都有一個或多個網站。我正在重複使用所有公司的部門和網站表格。我基本上擁有一個全球性的分支機構和網站,供每家公司使用。我的最終目標是將所有屬於公司分部的網站都拉出來。MySQL根據附加表的條件選擇行
Company 1
|
+ Division 1
| |
| + Site 1
| + Site 2
|
+ Division 2
|
Company 2
|
+ Division 3
| |
| + Site 3
| + Site 2
|
+ Division 1
|
公司
+----+-------------+
| id | name |
+----+-------------+
| 1 | company 1 |
+----+-------------+
| 2 | company 2 |
+----+-------------+
網站
+----+-------------+
| id | name |
+----+-------------+
| 1 | site 1 |
+----+-------------+
| 2 | site 2 |
+----+-------------+
| 3 | site 3 |
+----+-------------+
部門
+----+-----------------+
| id | name |
+----+-----------------+
| 1 | division 1 |
+----+-----------------+
| 2 | division 2 |
+----+-----------------+
| 3 | division 3 |
+----+-----------------+
company_divisions
+----------+--------------+
| company | division |
+----------+--------------+
| 1 | 1 |
+----------+--------------+
| 1 | 2 |
+----------+--------------+
| 2 | 1 |
+----------+--------------+
| 2 | 3 |
+----------+--------------+
個
company_sites
+----------+------------+
| company | site |
+----------+------------+
| 1 | 1 |
+----------+------------+
| 1 | 2 |
+----------+------------+
| 2 | 2 |
+----------+------------+
| 2 | 3 |
+----------+------------+
我本來以爲我可以選擇全部由company.id
和division.id
制約sites
的,但我已經沒有這樣的運氣。我試圖子查詢:
select *
from sites
where id IN (select site from company_sites where company = 3)
,並加入:
select s.*
from sites s
inner join company_sites cs on s.id = cs.site
where cs.company = 3
但這些結果僅與company_site
而不是division
。我似乎無法弄清楚如何獲得company_divisions
表參與..這樣的事情:
select s.*
from sites s
inner join company_sites cs on s.id = cs.site
inner join company_divisions cd on divisions.id = cd.division
where cs.company = 2 AND cd.division = 3
我如何添加,以確保一個附加條件或查詢,同樣的company.id
這是用來選擇site
在company_sites
涉及company.id
在company_division
通過division.id
?
例如給出company.id = 2
和division.id = 3
我期望site 2
和site 3
的結果。
建設性的批評總是值得歡迎的。
你應該以取回屬於師網站站點或反之亦然部門的一些映射.. – RohitS
@RohitS我考慮添加一個divsion_site表,但問題是多家公司可以使用相同的部門。也許我應該減少誘餌,讓每家公司都住在自己的數據庫中? – atomSmasher
最後的電話是你的,但如果你有多個相同的部門,你的目標是從屬於一個公司的一個部門獲取所有的網站,但仍然是這樣。 – RohitS