我用多条语句表达一下.
select ZID,NAME,ATRA from daili where uid<>0 order by id desc
这是第一条语句.从里面取一个ZID做为下一个语句的条件.
select * from zhaoshang where id="&ZID
如果有记录就把它放在第一个查询的后面.如果没有输出"无对应记录"放在第一个查询的后面.
如何所上面的两个语句合并成一个语句?高手请指教.
select ZID,NAME,ATRA from daili where uid<>0 order by id desc
这是第一条语句.从里面取一个ZID做为下一个语句的条件.
select * from zhaoshang where id="&ZID
如果有记录就把它放在第一个查询的后面.如果没有输出"无对应记录"放在第一个查询的后面.
如何所上面的两个语句合并成一个语句?高手请指教.
或者用联合查询的方法
select * from zhaoshang where id in (select ZID,NAME,ATRA from daili where uid<>0 order by id desc)
on
daili.ZID = zhaoshang.id
where
daili.uid <> 0 order by id desc
---------------------------------
关键是你的需求:“如果有记录就把它放在第一个查询的后面.如果没有输出"无对应记录"放在第一个查询的后面. ”
---------------------------------
这句话确实很难理解。不晓得我写的SQL是否为楼主要的。。
if exists (select * from zhaoshang)
select * from zhaoshang where id in (select ZID from daili where uid <> 0 order by id desc )
else
print 'error'
表DAILI
ZID PRODUCT
1 新产品1
2 新产品2
3 新产品3
表ZHAOSHANG
ID DANWEI
3 ADSS
4 TTST
想要的结果
ZID PRODUCT ID DANWEI
1 新产品1 无记录
2 新产品2 无记录
3 新产品3 3 ADSS
SELECT a.ZID,a.PRODUCT,b.ID,b.DANWEI FROM DAILI a LEFT JOIN ZHAOSHANG b ON a.ZID=b.ID
ZID,
PRODUCT,
ID,
DANWEI = isNull(DANWEI,'无记录')
from
zhaoshang z
right JOIN
daili d
on
d.ZID = z.ID
where exists
(
select ZID from daili where zid <> 0 and ZID = z.ID
)
11楼应该行,没试过就LEFT JOIN不大懂中午看看相关资料去
select
ZID,
PRODUCT,
ID,
DANWEI = isNull(DANWEI,'无记录')
from
zhaoshang z
right JOIN
daili d
on
d.ZID = z.ID
where exists
(
select count(1) from daili where zid <> 0 and ZID = z.ID
)
select
ZID,
PRODUCT,
ID,
DANWEI = isNull(DANWEI,'无记录')
from
zhaoshang z
right JOIN
daili d
on
d.ZID = z.ID