在给定 SQL 中另外两个 table 的键的情况下填充 table
Populating a a table given the keys to two other tables in SQL
鉴于此原件 table:
'Public_Table'
U_ID city state
1 NYC NY
2 DET MI
3 DEN Co
4 NYC NY
5 NULL NULL
(在 SQL 中)我必须创建一个新的 table 'Users' 由所有唯一用户和另一个所有唯一城市组成(并且必须定义 city_ids通过使用触发器和序列到每个城市),然后使用 Public_table 填充两者:
'Users'
U_ID
1
2
3
4
5
和'Cities'
City_ID name state
01 NYC NY
02 DET MI
03 DEN Co
然后我需要定义一个新的 table 'current_user_city',它由每个不同的用户及其关联的 city_id 组成,然后填充它。此外,重要的是要注意,对于城市和州的 NULL 条目的人,他们仍应出现在新的 table 中。例如,这就是它在这种情况下的样子:
U_ID City_ID
1 01
2 02
3 03
4 01
5 NULL
我尝试了很多选项,认为这应该是一项简单的任务,但我对 SQL 还很陌生,我还没有找到一种可能的方法来完成这项工作,同时还包括空值.我显然需要以某种方式使用用户的城市、状态和每个 city_id 的城市、状态来匹配它们并插入新的 table 但我不知道正确的 commands/syntax这样做。同样重要的是要注意,没有额外的 tables 可以解决这个问题,而且所有这些 tables 必须在尝试填充它们时已经定义。
如果您有任何想法,请告诉我!谢谢!
您要查询的是:
select Users.U_Id, Cities.City_id
from Users Inner Join Public_Table On Users.U_Id = Public_Table.U_Id
Left Outer Join Cities On Public_Table.city = Cities.name
Inner Join 作为集合的交集,因此您只能得到两者都存在的结果 table(取决于连接条件)。
Left Outer Join 获取内部联接的所有内容,并且还从 'left' table 获取值,这些值在 'right' 端为 null。它有另一种变体,称为右外连接。
鉴于此原件 table: 'Public_Table'
U_ID city state
1 NYC NY
2 DET MI
3 DEN Co
4 NYC NY
5 NULL NULL
(在 SQL 中)我必须创建一个新的 table 'Users' 由所有唯一用户和另一个所有唯一城市组成(并且必须定义 city_ids通过使用触发器和序列到每个城市),然后使用 Public_table 填充两者: 'Users'
U_ID
1
2
3
4
5
和'Cities'
City_ID name state
01 NYC NY
02 DET MI
03 DEN Co
然后我需要定义一个新的 table 'current_user_city',它由每个不同的用户及其关联的 city_id 组成,然后填充它。此外,重要的是要注意,对于城市和州的 NULL 条目的人,他们仍应出现在新的 table 中。例如,这就是它在这种情况下的样子:
U_ID City_ID
1 01
2 02
3 03
4 01
5 NULL
我尝试了很多选项,认为这应该是一项简单的任务,但我对 SQL 还很陌生,我还没有找到一种可能的方法来完成这项工作,同时还包括空值.我显然需要以某种方式使用用户的城市、状态和每个 city_id 的城市、状态来匹配它们并插入新的 table 但我不知道正确的 commands/syntax这样做。同样重要的是要注意,没有额外的 tables 可以解决这个问题,而且所有这些 tables 必须在尝试填充它们时已经定义。
如果您有任何想法,请告诉我!谢谢!
您要查询的是:
select Users.U_Id, Cities.City_id
from Users Inner Join Public_Table On Users.U_Id = Public_Table.U_Id
Left Outer Join Cities On Public_Table.city = Cities.name
Inner Join 作为集合的交集,因此您只能得到两者都存在的结果 table(取决于连接条件)。
Left Outer Join 获取内部联接的所有内容,并且还从 'left' table 获取值,这些值在 'right' 端为 null。它有另一种变体,称为右外连接。