[英]How do I join 2 tables to a third one which contains the primary key?
我有 4 個表:第一個是客戶端表,其中包含客戶信息,並且 client_id 作為自動增量主鍵。
第二個和第三個在結構上是相同的:它們用於跟蹤兩個不同治療項目的出勤情況。 它們每個都有一個主鍵和一個用於跟蹤客戶端的 client_id 列。 其中一個字段包含我想求和的單位。
最后一個表格包含治療師的信息。
基本上我想從兩個出勤表中提取每個客戶的單位總數。
我試過 LEFT JOINS 無濟於事。 我還嘗試了 UNION ALL,但無法將單位相加。
這是表格的外觀:
客戶:
+---------------------------------------+
| client_id | f_name | l_name | th_id |
|-----------|----------|--------|-------|
| 1 | sherlock | holmes | 1 |
| 2 | john | watson | 4 |
| 3 | hercule | poirot | 3 |
| 4 | jane | marple | 2 |
+---------------------------------------+
治療師:
+--------------------------+
| th_id | f_name | l_name |
|-------|---------|--------|
| 1 | james | kirk |
| 2 | mr | spock |
| 3 | bones | mccoy |
| 4 | nyota | uhura |
+--------------------------+
出席吧:
+-------------------------------+
| it_id | client_id | units |
|-----------|-----------|-------|
| 1 | 1 | 4 |
| 2 | 1 | 4 |
| 3 | 1 | 0 |
| 4 | 1 | 2 |
| 5 | 4 | 0 |
| 6 | 4 | 4 |
| 7 | 4 | 0 |
| 8 | 4 | 2 |
+-------------------------------+
出勤率:
+-------------------------------+
| it_id | client_id | units |
|-----------|-----------|-------|
| 1 | 1 | 16 |
| 2 | 1 | 16 |
| 3 | 1 | 0 |
| 4 | 1 | 12 |
| 5 | 4 | 0 |
| 6 | 4 | 14 |
| 7 | 4 | 8 |
| 8 | 4 | 10 |
+-------------------------------+
結果應如下所示:
+------------------------------------------------------------+
| client_id | total_units_it | total_units_psr | therapist |
|-----------|----------------|-----------------|-------------|
| 1 | 10 | 44 | james kirk |
| 4 | 6 | 32 | mr spock |
+------------------------------------------------------------+
請原諒原始表示,請不要問為什么表格設計成那樣...... ;-) 另外,我顯然忽略了許多與問題無關的其他字段,例如日期等。
任何意見,將不勝感激。
謝謝!
您不能使用 join ,否則您將創建笛卡爾積並復制行。
相反,您執行子查詢:
SELECT c.*
, (SELECT SUM(units) FROM attendance_it a WHERE a.client_id = c.client_id ) as total_units_it
, (SELECT SUM(units) FROM attendance psr a WHERE a.client_id = c.client_id ) as total_units_psr
, t.*
FROM client c
JOIN therapist t
ON c.th_id = t.th_id
使用group by client_id來獲取每個客戶端的總和。 並且無需使用 join,因為您已經在列中擁有 id。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.