求一稍为复杂的SQL语句的查询,晕了N久了,望高手指点呀在线等...

prominent 2006-02-24 03:22:15
程序中涉及到两个表:
pro_inf(产品信息)表(pro_tiaoxingma,pro_name,pro_biename,pro_fenzishi)等
kucun(库存)表(pro_tiaoxingma,pro_supplier,pro_kucun,kucun_upline,kucun_downline)等
我想实现的是:
依据库存表中的产品的条形码查询相对应的产品信息表中的此产品的相关信息.同时将此产品的库存信息也查询出来在一行中显示.
我对联合查询不是太懂.
我的SQL语句是:
rs.Open "select pro_tiaoxingma,pro_name,pro_biename,pro_fenzishi from pro_inf where pro_tiaoxingma='" & _
"select pro_tiaoxingma from kucun" & "' union " & "select pro_supplier,pro_kucun,kucun_upline,kucun_downline from kucun", conn, 2, 2
运行的结果很乱...
虽然没有报错.
问题出在哪了望高手指点呀谢了..
在线等...





...全文
187 点赞 收藏 25
写回复
25 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
EverySoft 2006-02-27
你真是菜鸟呀!弟弟!这辈子我是成不了大哥了,下辈子吧
回复
prominent 2006-02-26
对我来说,,我就是菜鸟呀..呵呵...
回复
gdgf 2006-02-25
改为内联查询:
rs.Open "select p.pro_tiaoxingma,p.pro_name,p.pro_biename,p.pro_fenzishi,k.pro_supplier,k.pro_kucun,k.kucun_upline,k.kucun_downline
from pro_inf as p inner join kucun as k
on p.pro_tiaoxingma=k.pro_tiaoxingma "

试试看,应该没有问题.
回复
prominent 2006-02-25
to:c_c(cc)看来真是您说的问题呀...
我试了...
再加上我改了一下循环体
就行了...
谢了...
楼上的....
看来以下两种方法完全可行的...
1.select * from ...where a.pro_tiaoxingma=b.pro_tiaoxingma
2.select * from ...left/inner join on a.pro_tiaoxingma=b.pro_tiaoxingma
where ...
谢了以上的所有大哥们的热心帮助呀...

回复
prominent 2006-02-25
晕了是我写程序的时候太不小心了...
循环显示所有记录的时候。..
只显示了其中的一部分...
没有显示所有的...
我试了楼上所有大哥的方法都可以正确运行...
谢了...


回复
EverySoft 2006-02-25
如果要试我的方法,您要先将所有的NULL值改为0呀,就是在VB中写条语句清0,然后再改默认值为零(为以后)。
回复
EverySoft 2006-02-25
首先ACCESS数据库(我不知道您用的是哪个版本的)是不能用连接的,我提供了条语句吧看看行不行,如果不行我们再讨论
select 要哪个字段自己填写吧 from pro_inf as a,kucun as b where a.pro_tiaoxingma=b.pro_tiaoxingma
我又仔细的看了上面的回帖,有我写的代码,楼主说还是不行,我又考虑了一下,终于想起来您是不是那些库存字段是数值型的吧,那些项中没有设默认值为0吧,其中一定是有NULL值,您是否试着改一下,再看看。
回复
vbman2003 2006-02-25
你怎么显示你的数据的?你试试直接放在ACCESS查询对象中分析
回复
prominent 2006-02-25
谢了楼上的...
可还是不行...
没有报错但
仍只能显示...
一部分数据...
晕了...
苦思中并在线等呀...

回复
gdgf 2006-02-25
你的连接串当然错了,连接条件怎么能与查询条件放在一起呢?
表达式的后部分应改为:
from pro_inf as p inner join kucun as k on p.pro_tiaoxingma=k.pro_tiaoxingma
where p.pro_name like '%" & Trim(combo3.Text) & "%'"
回复
prominent 2006-02-25
还是不行呀晕了...
急呀...
pro_tiaoxingma是唯一的呀...
rs.Open "select p.pro_tiaoxingma,p.pro_name,p.pro_biename,p.pro_fenzishi,k.pro_supplier,pro_kucun,kucun_upline,kucun_downline from pro_inf as p,kucun as k where p.pro_tiaoxingma=k.pro_tiaoxingma and p.pro_name like '%" & Trim(combo3.Text) & "%'", conn, 2, 2
这是我的源代码我想根据产品名称进行模糊查询...
我改为内联查询后:
rs.Open "select p.pro_tiaoxingma,p.pro_name,p.pro_biename,p.pro_fenzishi,k.pro_supplier,pro_kucun,kucun_upline,kucun_downline from pro_inf as p inner join kucun as k on p.pro_tiaoxingma=k.pro_tiaoxingma and p.pro_name like '%" & Trim(combo3.Text) & "%'", conn, 2, 2
报错说是不支持连接表达式...
去掉...and p.pro_name like '%" & Trim(combo3.Text) & "%'后也不能得到我想要的结果...



回复
EverySoft 2006-02-25
楼主都称大哥呀,大哥中可不包括CC呀。
回复
sin_xt 2006-02-25
select kc.pro_tiaoxingma,kc.pro_supplier,kc.pro_kucun,kc.kucun_upline,kc.kucun_downline,
pi.pro_name,pi.pro_biename,pi.pro_fenzishi
from kucun as kc
left join pro_inf as pi
on pi.pro_tiaoxingma=kc.pro_tiaoxingma

这样应该没问题啊,如果你(库存表)中pro_tiaoxingma是唯一的,否则另作处理!
回复
prominent 2006-02-24
有呀是产品条形码呀...
不能看到库存表中的:
pro_supplier,pro_kucun,kucun_upline,kucun_downline所有字段...
(供应商,当前库存,库存上限,库存下限)
晕了...
是不是要建立关系呀...
我没有建立呀...
只是在这两个表中有相同的字段(数据类型当然也相同的...)
我用的是Access数据库...


回复
cool_man 2006-02-24
你说个例子,不能看到哪些数据
回复
cool_man 2006-02-24
可就是不能显示...
相关产品的库存信息....

你上面的两个表中没有相关产品的字段呀
回复
prominent 2006-02-24
是对应的呀...
完全能够得到我想要的结果...
只是就是不显示相应产品的库存信息...
晕了...
盼望中...!!!
回复
feiyun0112 2006-02-24
p.pro_tiaoxingma=k.pro_tiaoxingma
是不是对应的
回复
prominent 2006-02-24
晕呀...
就是不能显示...
靠...
晕了...
望知道的给小弟一个指示呀...
谢了...
在线等...

回复
njxl 2006-02-24
二表关联查询,一楼说的很清楚了,呵呵
回复
加载更多回复
相关推荐
发帖

1187

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2006-02-24 03:22
社区公告
暂无公告