子查询返回的值超过1。

时间:2012-06-08 14:26:45

标签: sql-server

我有这个问题的查询.. 任何人都可以帮助我?

这是我的查询

select t_tarif.lama, 
    t_tarif.id,
    t_tarif.kurir, 
    t_tarif.id_propd, 
    t_lokasi.propinsi as 'propinsi_asal', 
    t_tarif.kota_asal,
    t_tarif.id_propt,
    (select 
        t_lokasi.propinsi 
        from t_lokasi,t_tarif 
        where t_lokasi.id_prop =t_tarif.id_propt)as 'propinsi_tujuan',
    t_tarif.kota_tujuan, 
    t_tarif.tarif 
from t_tarif,t_lokasi 
where t_lokasi.id_prop = t_tarif.id_propd

1 个答案:

答案 0 :(得分:2)

问题在于此选择:

(select t_lokasi.propinsi from t_lokasi,t_tarif where t_lokasi.id_prop =t_tarif.id_propt)

它只能返回1个值并返回更多。


可能的解决方案是使用JOIN

select t.lama,
       t.id,
       t.kurir,
       t.id_propd,
       l.propinsi as 'propinsi_asal',
       t.kota_asal,
       t.id_propt,
       l2.propinsi as 'propinsi_tujuan',
       t.kota_tujuan,
       t.tarif
from t_tarif t
inner join t_lokasi on l.id_prop = t.id_propd
left outer join t_lokasi l2 on l2.id_prop = t.id_propt

我使用了左连接来获取另一个子句,因为它似乎就是你所需要的。