1

我真的很空白-此代码很好地选择了行,除了那些我将 st.station_id 从值 '1' 更改为不同(但仍然有效)的数字但没有该 station_id 条目的条目在 station_owner_map 表、组织表或 cap_gen_data_table 中。我基本上需要修改我的 sql 以忽略任何没有条目的表。

Select st.station_id, st.station_name , st.st_town, st.st_state, c1.country_name,   o1.organisation_name, som1.equity, st.river_basin, st.cost, st.cost_ref, st.comm_year,cg1.caporgen, ht1.hydro_name, cg1.value, srs1.srs_description, cg1.ref_year
FROM station st
inner join station_country_map scm1 on st.station_id = scm1.station_id
inner join country c1 on scm1.country_id = c1.country_id
inner join station_owner_map som1 on st.station_id = som1.station_id
inner join organisation o1 on som1.owner_id = o1.org_id
inner join cap_gen_data cg1 on st.station_id = cg1.station_id
inner join value_lookup vl1 on cg1.caporgen = vl1.id
inner join hydro_type ht1 on cg1.hydro_type_id = ht1.type_id
inner join station_record_status srs1 on cg1.capacity_status = srs1.st_rec_stat_id
where st.station_id = 1
4

2 回答 2

2

这是你的s造成inner join的。Inner join意味着必须在两个表中都有一个值才能使记录显示在结果集中。

改为使用left join,则只有“左侧”表必须具有值。

于 2013-08-09T15:50:24.587 回答
0

left在值可能不存在的表上 使用连接。

如果您有两个表A并且B内部联接将仅返回A满足联接条件的行。无论是否满足连接条件,连接left都将返回所有行。当使用左连接时A,与关联的 select 语句中的列将为空。B

我只添加了left join您指定的表格。如果其他表可能不满足连接条件,则将连接类型从 更改innerleft

Select st.station_id, st.station_name , st.st_town, st.st_state, c1.country_name,   o1.organisation_name, som1.equity, st.river_basin, st.cost, st.cost_ref, st.comm_year,cg1.caporgen, ht1.hydro_name, cg1.value, srs1.srs_description, cg1.ref_year
FROM station st
inner join station_country_map scm1 on st.station_id = scm1.station_id
inner join country c1 on scm1.country_id = c1.country_id
left join station_owner_map som1 on st.station_id = som1.station_id
left join organisation o1 on som1.owner_id = o1.org_id
left join cap_gen_data cg1 on st.station_id = cg1.station_id
inner join value_lookup vl1 on cg1.caporgen = vl1.id
inner join hydro_type ht1 on cg1.hydro_type_id = ht1.type_id
inner join station_record_status srs1 on cg1.capacity_status = srs1.st_rec_stat_id
where st.station_id = 1
于 2013-08-09T15:46:45.057 回答