2
我有這4個表。查詢帶有2個外鍵的表
Mail
----
id
date
Source (can have many source)
------
id
mailID : FK Mail.id
personID : FK Person.id
Destination (can have many destination)
-----------
id
mailID : FK Mail.id
personID : FK Person.id
Person
------
id
name
我想創建一個查詢,返回所有源和目標ID的每個郵件。
到目前爲止,我已經提出了這個查詢,但它效率相當低,因爲它查詢兩次相同的表。
Select * FROM (
Select m.*, personID, 'Source' AS TableName
FROM Mail m join Source s
ON m.id = s.mailid
UNION ALL
Select m.*, personID, 'Destination' AS TableName
FROM Mail m join Destination d
ON m.id = d.mailid
) t ORDER BY id, TableName;
results:
id | date | personID | TableName
--------------------------------
1 | 1-1-11| 3 | Source
1 | 1-1-11| 4 | Source
1 | 1-1-11| 5 | Source
1 | 1-1-11| 10 | Destination
1 | 1-1-11| 11 | Destination
2 | 2-2-11| 1 | Source
2 | 2-2-11| 2 | Destination
完全忘了我可以只移動郵件查詢出來! – Tim