要約すると、私は複数のサイトと複数の部門を所有するいくつかの企業があります。各部門には1つ以上のサイトがあります。私はすべての企業の部門テーブルとサイトテーブルを再利用しています。私は本質的に各企業が引き出す部門とサイトのグローバルなプールを持っています。私の最終目標は、会社の部門に属するすべてのサイトを引き出すことです。追加テーブルの条件に基づいて行を選択する
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
に関連しています。どのように私はsite
を選択するために使用されたものと同じcompany.id
ことを保証し、追加の条件またはクエリを追加することができます
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_divisions
テーブルを取得する方法を見つけ出すように見えることはできませんcompany_sites
では、company.id
はcompany_division
であり、division.id
?
たとえば、company.id = 2
とdivision.id = 3
の場合、site 2
とsite 3
の結果が予想されます。
常に批判的です。
を返します
を... – RohitS
@RohitS私はdivsion_siteテーブルを追加することを検討しましたが、問題は複数の企業が同じ部門を使用することができました。たぶん、私は餌をカットして、各社を独自のデータベースに生かすべきでしょうか? – atomSmasher
最後の呼び出しはあなたのものですが、複数の同じ部門がある場合、あなたの目的は会社に属する部門からすべてのサイトを取得することです。 – RohitS