我在工作中使用了两个表来帮助我获得编写SQL查询的经验。一个表包含Applications
列表,有三列 -
Application_Name
,Application_Contact_ID
和Business_Contact_ID
。然后,我有一个名为Contacts
的单独表格,其中有两列 - Contact_ID
和Contact_Name
。我正在尝试编写一个查询,列出Application_Name
和Contact_Name
列的Applications_Contact_ID
和Business_Contact_ID
,而不是ID号本身。
我知道我需要加入这两个表,但我还没弄清楚如何制定正确的语句。请帮忙!
申请表:
+------------------+------------------------+---------------------+
| Application_Name | Application_Contact_ID | Business_Contact_ID |
+------------------+------------------------+---------------------+
| Adobe | 23 | 23 |
| Word | 52 | 14 |
| NotePad++ | 44 | 989 |
+------------------+------------------------+---------------------+
联系表:
+------------+--------------+
| Contact_ID | Contact_Name |
+------------+--------------+
| 23 | Tim |
| 52 | John |
| 14 | Jen |
| 44 | Carl |
| 989 | Sam |
+------------+--------------+
我想要的是:
+------------------+--------------------------+-----------------------+
| Application_Name | Application_Contact_Name | Business_Contact_Name |
+------------------+--------------------------+-----------------------+
| Adobe | Tim | Tim |
| Word | John | Jen |
| NotePad++ | Carl | Sam |
+------------------+--------------------------+-----------------------+
我已尝试过以下内容,但它只返回其中一列的名称:
SELECT Application_Name, Application_Contact_ID, Business_Contact_ID, Contact_Name
FROM Applications
JOIN Contact ON Contact_ID = Application_Contact_ID
答案 0 :(得分:2)
这是一个非常关键的SQL和101部分。考虑在另一个问题上阅读this other answer,这可以更深入地解释联接。您的查询的诀窍是,您必须两次加入CONTACTS
表,这有点难以可视化,因为您必须同时访问application_contact_id
和business_contact_id
。
有许多种类的联接(INNER
,LEFT
,RIGHT
等等,您需要熟悉这些联接以供将来参考。请至少阅读本文:https://www.techonthenet.com/sql_server/joins.php。
SELECT t1.application_name Application_Name,
t2.contact_name Application_Contact_name,
t3.contact_name Business_Contact_name
FROM applications t1
INNER JOIN contacts ON t2 t1.Application_Contact_ID = t2.contact_id -- join contacts for appName
INNER JOIN contacts ON t3 t1.business_Contact_ID = t3.contact_id; -- join contacts for busName