Access select where 数据库查询 多表联合查询

Access中现有两个表Table1,Table2
Table1数据结构如下
---------------------------
id pid
---------------------------
1 23
2 14,23
3 4
4 2,5,6
......
---------------------------

Table2数据结构如下
---------------------------
pid name
---------------------------
1 abc
2 defghijk
3 lmnop
4 def
......
---------------------------
现需要找出Table1中所有pid 对应的name 含 某个字符串 的数据id
如查找"def", Table2对应满足条件的pid 有2,4;需要查询的Table1中的数据集就有3,4两条,第1,2条包含对应数值但不符合精确查找pid,需排除。

已经尝试可以使用以下语句查询到Table1.pid 只有单项的数据, 如上例中只有第3项
select id from table1 where pid in (select cint(pid) from table2 where name like '%def%')
但Table1.pid 有多项(使用逗号隔开)的数据无法查询,如例中无第4项
使用ASP(不是asp.net)+Access 如何写sql可以实现, 求解
多谢1楼的回答,经尝试,有以下问题需解决后实现
1,不能用||连接,like里要用+
2,字段变量不能在单引号内
3, 要对所有pid Cstr() 类型转换,仅限本例
最终效果如下
select a.id from table1 as a join table2 as b where (( a.pid = Cstr(b.pid) or a.pid like '%,'+Cstr(b.pid) or a.pid like '%,'+Cstr(b.pid)+',%' or a.pid like Cstr(b.pid)+',%') and b.name like '%def%')

第1个回答  2015-07-24
试试 select a.id from table1 as a join table2 as b where ( a.pid = b.pid or a.pid like '%,||b.pid or a.pid like '%,||b.pid||,%' or a.pid like b.pid||,%') and b.name like '%def%')本回答被提问者和网友采纳
相似回答