sakila数据库人员表

bmp9r5qi  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(227)

我正在练习使用mysql工作台的示例数据库“sakila”。当我尝试的时候

select address.address,staff.address_id,store.address_id,address.address from store
join address on store.address_id=address.address_id
join staff on staff.store_id=store.store_id ;

我在两个地址字段中得到相同的地址,而不是不同的地址id。为什么我在两个地址字段中得到相同的地址?

tjrkku2a

tjrkku2a1#

你需要加入 address 两次使用不同别名的表

select staff.address_id, a_staff.address as staff_adress,
       store.address_id, a_store.address as store_adress
from store
join staff on staff.store_id = store.store_id
join address a_staff on staff.address_id = a_staff.address_id
join address a_store on store.address_id = a_store.address_id
nom7f22z

nom7f22z2#

因为您用相同的地址联接staff和store表(实际上您将store表的address表和staff表与store联接,所以此结果集中的address是针对store而不是针对staff的)表,并且联接条件仅为store而不是针对staff的pick addresses和与相关store联接的staff表,所以为什么在结果集中得到相同的地址两列。

相关问题