![](/img/trans.png)
[英]Select query : from clause is having multple tables, but i want where clause to have condition on only two tables
[英]I want SQL query to relate two tables data ,where both tables have only one column each
我有两张桌子国家和城市。 两个表只有一列。 在国家/地区表中,我的值为 INDIA、UK、US 等。 在 City 表中,我有 LONDON、BANGALORE、DELHI、WASHINGTON 等值。
我想写 SQL 查询,这样 output 应该像我 select UK,LONDON 应该排在前面,所以在 US.WASHINGTON
请提供我的查询。
您需要在 City 表中创建一个外键,然后将这些表连接在一起
ALTER TABLE city ADD COLUMN country VARCHAR(25);
ALTER TABLE city ADD PRIMARY KEY (city);
ALTER TABLE country ADD PRIMARY KEY (country);
ALTER TABLE city ADD FOREIGN KEY (country) REFERENCES country(country)
SELECT CONCAT(city, ", ", country) FROM city JOIN country USING (country)
不可能在这两个表之间建立关系,因为它们只有一列。 您必须将 [Country] 列添加到 [City] 表中才能知道城市所属的国家/地区。
您需要第三个表来存储两个表之间的关系,并且您需要将 ID 字段添加到每个现有表中。
table city
id | city
1 | chicago
table country
id | country
3 | United States
table lookup
id | city_id | country_id
5 | 1 | 3
您必须执行 JOIN 才能连接表
SELECT * FROM
lookup JOIN city ON lookup.city_id = city.id JOIN country ON lookup.country_id = country.id
希望这可以帮助
这里有几个选项。
首先要考虑的是是否要使用城市/国家名称作为唯一标识行的方式。 尽管这些不太可能改变,但并非没有先例。 Bombay => Mumbai
, Ceylon => Sri Lnka
,拼写错误等。我个人建议在每个表上使用 integer 字段作为主键/唯一标识符。 然后,您可以更改名称(包括拼写错误),而不会影响数据库中的任何其他内容。
然后,您需要关联这两个表。 一种选择是向 CITY 表中添加一个字段,该字段指向 COUNTRY 表中的唯一标识符。 另一种方法是拥有一个包含两列的完全独立的表,将每个城市的唯一标识符与其关联的国家/地区的唯一标识符相关联。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.