以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [讨论]SQL语句中关联字段的求助 6日更新问题在8楼  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=74881)

--  作者:huangfanzi
--  发布时间:2015/9/21 21:47:00
--  [讨论]SQL语句中关联字段的求助 6日更新问题在8楼
假定有二表,分别是合同或生产计划,结构如下:

合同表:
合同号  公司  产品
A001   01    AAA
A002   02    BBB

生产计划表:
原料编号  配属合同号
XXX       A001|A002
生产计划表的配属合同号的意思是 所投的料用于合同号A001与A002这二份合同

我希望这二张表关联起来,让我能查到合同表中的各个合同是否有对应的生产计划,即生产部已经安排生产。 
合同号  公司  产品  原料编号  配属合同号 
A001   01    AAA  XXX       A001|A002
A002   02    BBB  XXX       A001|A002
这样的查询语句应该如何写?
[此贴子已经被作者于2015/10/6 20:02:23编辑过]

--  作者:大红袍
--  发布时间:2015/9/21 22:01:00
--  

用inner join

 

from {合同} a inner join {生产计划} b on b.合同号 like ("%" + a.合同号 + "%")

 

-----------

 

select * f rom {表A} a inner join {表B} b on b.第一列 like ("%" + a.第一列 + "%")


--  作者:huangfanzi
--  发布时间:2015/9/22 11:19:00
--  
老师,直接用SQL语句我看的有点累,我是用查询表生成器做的,下面的例子是基于合同表中合同号与生产计划表中合同号一一对应写的,现在根据我1楼的情况,帮我改下代码。谢谢!

Dim jb As New SQLJoinTableBuilder("查询表1","合同")
jb
.ConnectionName = "ShcsErpSql"
jb
.AddTable("合同","合同号","生产计划","配属合同号")
jb
.AddCols("合同号","公司","产品", "原料编号","配属合同号")
Tables
("合同配属查询_Table1").Fill(jb.BuildSql,"ShcsErpSql",True)

--  作者:大红袍
--  发布时间:2015/9/22 11:25:00
--  

用代码不能做。必须用sql语句才行。

 

select 合同号,公司,产品,原料编号,配属合同号 f rom {合同} a inner join {生产计划} b on b.配属合同号 like ("%" + a.合同号 + "%")

 


--  作者:huangfanzi
--  发布时间:2015/9/30 12:52:00
--  
今天在用上面的代码时,想加个where,但不成功,是不能加吗?
select 合同号,公司,产品,原料编号,配属合同号 f rom {合同} a inner join {生产计划} b on b.配属合同号 like ("%" + a.合同号 + "%") Where {合同} .[_Identify] Is Null

--  作者:jspta
--  发布时间:2015/9/30 13:17:00
--  
你表格主要关联字段居然是合并在一起的,这两个表的关联将可能出现不唯一的情况,应该这样设计

合同表:
合同号  公司  产品
A001   01    AAA
A002   02    BBB

生产计划表:
原料编号  ……
AA11
AA12
关联表
关联1 关联2
A001  AA11
A002  AA11
然后内关联这三张表格就可以完成一组多对多关联了

--  作者:大红袍
--  发布时间:2015/9/30 14:21:00
--  

可以加条件,但条件必须是有效的条件啊,不满足条件自然不会显示啊

 

select 合同号,公司,产品,原料编号,配属合同号 f rom {合同} a inner join {生产计划} b on b.配属合同号 like ("%" + a.合同号 + "%") Where a.合同号 = "123456"

--  作者:huangfanzi
--  发布时间:2015/10/6 19:55:00
--  
我加“Where {合同} .[_Identify] Is Null”的目的就是显示一张查不到结果的空表,在窗口打开后的table能显示一个空表,但有各字段名,我一直用这个办法实现这种功能,请问老师在这里的有JOIN代码中如何实现。 
[此贴子已经被作者于2015/10/6 20:02:02编辑过]

--  作者:大红袍
--  发布时间:2015/10/7 10:18:00
--  
直接写 where 1=2 即可,不行,就做个例子上来看看