jsp页面关于数据库多对多查询的sql语句应该怎么写?

我是用的mysql数据库

这是一张用户表

图片说明

这是项目表

图片说明

现在我想根据用户表里的“DetectID”对应项目表里的“id”进行关联查询其项目名称,“DetectID”里有几个数据,就查出项目表里的几个名称。这条SQL语句该怎么写,我老是查询到第一条数据就结束了。

11个回答

如果项目表数据不多,可以一次查询所有项目表,用程序处理你的detectID与名称的匹配。

注:你这个设计存在缺陷,应该有一张表:项目id与用户id的对应关系表

a718089112
a718089112 回复t1441332354: 可以.如果一个人的数据查询,完全没问题,比如tan登录:select ItemName from 表2 where id in (1,2) 1,2是你动态获取的数据
大约 2 年之前 回复
t1441332354
t1441332354 可以这样写吗:“先登录用户,查询账号密码是否正确,若正确就取出DetectID值,再用这个值去查询项目表的数据”
大约 2 年之前 回复

USE test;
BEGIN
DECLARE @param CHAR(10),
@sql NVARCHAR(100);
SELECT @param= REPLACE(DetectID,';',',') FROM dbo.**Master** WHERE mid=2;
EXECUTE ('SELECT ItemName FROM dbo.**Item** WHERE id IN('+@param+')');
END

你试下,我建的db是test , mid=2 这句换成你的检索条件
Master 为用户表
item 为项目表
希望对你有帮助

select ItemName from 项目表 where DetectID in( select replace(DetectID,";",",") from 用户表 where username='xxx' ); 用replace将;换为,

detectID的分割符最好的半角逗号,什么数据库?

t1441332354
t1441332354 mysql数据库
大约 2 年之前 回复

根据主外键来查询,用主外键判断查出来的是否正确

select ItemName from 项目表 where id in(select DetectID from 用户表 where username=xxx);

一个表里有另一个表的外键

试试一个表搜索上在包含另外一个表

先查询用户表中的DetectID的值,查询出的值比如是ls_DetectID;

再通过
String ls_DetectID_temp[] = ls_DetectID.split(";");
做一个for循环
for(int i=0;i<ls_DetectID_temp.length;i++){
通过ls_DetectID_temp[i]查询项目表中的数据
}

就直接连接查询吧,例如等价连接文件里的fid与fid一致

共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问