我在工作中使用两个表来帮助我获得编写 SQL 查询的经验。一个表包含Applications
列表,并具有三列 -
Application_Name
、Application_Contact_ID
和 Business_Contact_ID
。然后,我有一个名为 Contacts
的单独表,其中包含两列 - Contact_ID
和 Contact_Name
。我正在尝试编写一个查询,该查询将列出 Applications_Contact_ID
和 Business_Contact_ID
列的 Application_Name
和 Contact_Name
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 |
+------------------+--------------------------+-----------------------+
我已尝试以下操作,但它仅返回其中一列的名称:
选择应用程序名称、应用程序联系人 ID、业务联系人 ID、联系人姓名
来自应用程序
JOIN 联系人 ON Contact_ID = Application_Contact_ID
最佳答案
这是 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
关于sql - 使用表查找一行上的多个 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43684363/