表1的一个字段,分情况与表2的两个字段join怎么弄?

todaynew 2006-10-20 05:03:31
表1:字段goods_id,is_in
表2:字段goods_id,glink
如果表1.is_in=0,表1.goods_id与表2.goods_id联接;
如果表1.is_in=1,表1.goods_id与表2.goods_id联接;
select 表1.* from 表1 join 表2 on?????
...全文
206 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
todaynew 2006-10-23
  • 打赏
  • 举报
回复
union all出来的结果没有相加,统计出来的数量等数据就不对了啊
allright_flash 2006-10-23
  • 打赏
  • 举报
回复
select 表1.* from 表1 join 表2 on 表1.goods_id=表2.glink
where 表1.is_in=1
union all
select 表1.* from 表1 join 表2 on 表1.goods_id=表2.goods_id
where 表1.is_in=0
todaynew 2006-10-23
  • 打赏
  • 举报
回复
如果表1.is_in=1,表1.goods_id与表2.glink联接;
早起晚睡 2006-10-23
  • 打赏
  • 举报
回复
楼主的意思
如果表1.is_in=0,表1.goods_id与表2.goods_id联接;
如果表1.is_in=1,表1.goods_id与表2.goods_id联接;
让人费解啊
todaynew 2006-10-23
  • 打赏
  • 举报
回复
原SQL语句是这样的:
select
isnull(sum(rt.quantity),0) quantity,
isnull(sum(rt.weight),0) weight,
isnull(sum(rt.gross),0) gross,
isnull(sum(icd.mz*rt.quantity/icd.sl),0) mqs,
isnull(sum(rt.amount),0) amount,
isnull(sum(icd.je*rt.quantity/icd.sl),0) jqs
from
(select oc.* from out_ck2 oc join thd_1 t1 on oc.ckbh=t1.ckbh
where t1.is_sure='1'
) as rt
join in_ck_detail icd
on rt.goods_id=icd.goods_id

后来我要给最后一句(on rt.goods_id=icd.goods_id)加上条件,改成on (rt.is_in='0' and rt.goods_id=icd.goods_id) or (rt.is_in='1' and rt.goods_id=icd.glink)后,速度变得特别慢,请问各位还有没有别的方法?
注:以上各位所说的方法,我都试过,效果和我的写法一样
Well 2006-10-20
  • 打赏
  • 举报
回复
表1:字段goods_id,is_in
表2:字段goods_id,glink
如果表1.is_in=0,表1.goods_id与表2.goods_id联接;
select * from 表1 inner join 表2 on 表1.goods_id=2.goods_id
如果表1.is_in=1,表1.goods_id与表2.goods_id联接;
select 表1.* from 表1 join 表2 on?????
select * from 表1 inner join 表2 on 表1.goods_id=2.goods_id
dulei115 2006-10-20
  • 打赏
  • 举报
回复
select a.*
from 表1 a
join 表2 b on a.goods_id = (case a.is_in when 0 then b.goods_id when 1 then b.link end)
i9988 2006-10-20
  • 打赏
  • 举报
回复
楼主不更正一下自己的说法??
i9988 2006-10-20
  • 打赏
  • 举报
回复
可以这样的
select * from 表1,表2
where
(表1.is_in=0 and 表1.goods_id=表2.goods_id)
or
(表1.is_in=1 and 表1.goods_id=表2.glink)

i9988 2006-10-20
  • 打赏
  • 举报
回复
没说错?
marco08 2006-10-20
  • 打赏
  • 举报
回复
case when then else end

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧