4

我有 2 张桌子。一个带有联系信息,另一个带有城市 ID 和名称。例子。

Table 1 Contacts
ID,Name, HomeCity, BusinessCity
123,Ben,1,2

Table 2 Cities
CityID, CityName
1 Austin
2 Boston

我想创建一个显示 Ben 的家乡和商业城市的简单查询。

我不明白如何包含引用 CityName 两次的查询。

到目前为止,我所拥有的是:

SELECT Contacts.Name, Contacts.HomeCity, Contacts.BusinessCity, Cities.CityName
FROM Contacts,Cities
WHERE Contacts.ID=123 AND Contacts.HomeCity=Cities.CityID

我只是不明白。我希望查询显示给我的是:

Name, Home City, Business City
Ben, Austin, Boston
4

2 回答 2

2

您可以多次将联系人表加入到城市表中:

SELECT contacts.name, 
    cities.CityName 'Home City', 
    cities2.CityName 'Business City'
FROM contacts
    JOIN cities ON contacts.homecity = cities.cityid
    JOIN cities cities2 ON contacts.businesscity = cities2.cityid
WHERE contacts.ID=123

根据您想要的结果,您可能需要使用OUTER JOINs- 有关更多信息,请参阅下面的链接。

于 2013-10-10T01:11:53.340 回答
2

语法可能并不完美,但这个一般概念应该有效:

SELECT 
    Contacts.Name, 
    (SELECT CityName FROM Cities WHERE Contacts.HomeCity=Cities.CityID) AS HomeCity, 
    (SELECT CityName FROM Cities WHERE Contacts.BusinessCity=Cities.CityID) AS BusinessCity
FROM Contacts WHERE Contacts.ID=123
于 2013-10-10T01:03:32.750 回答