t1441332354
t1441332354
采纳率71.8%
2018-05-25 07:31 阅读 2.0k
已采纳

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

10

我是用的mysql数据库

这是一张用户表

图片说明

这是项目表

图片说明

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

11条回答 默认 最新

  • 已采纳
    a718089112 a718089112 2018-05-25 07:51

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

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

    点赞 2 评论 复制链接分享
  • qq_32565563 我爱大蜗牛 2018-05-25 09:12

    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 为项目表
    希望对你有帮助

    点赞 1 评论 复制链接分享
  • linux207 linux207 2018-05-25 09:15

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

    点赞 1 评论 复制链接分享
  • xcgh xcgh 2018-05-25 07:53

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

    点赞 评论 复制链接分享
  • qq_37743065 程序员小哥哥.... 2018-05-25 07:59

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

    点赞 评论 复制链接分享
  • uviolet uviolet 2018-05-25 08:03

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

    点赞 评论 复制链接分享
  • hxh_wuhen 胡西 2018-05-25 08:43

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

    点赞 评论 复制链接分享
  • love_benshanhou love_benshanhou 2018-05-25 13:18

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

    点赞 评论 复制链接分享
  • u014700625 3245354 2018-05-26 01:54

    先查询用户表中的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]查询项目表中的数据
    }

    点赞 评论 复制链接分享
  • qq_40994271 qq_40994271 2018-05-26 09:10

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

    点赞 评论 复制链接分享
  • zhubinjqjy zhubinjqjy 2018-06-22 05:42

    with 项目表( id,itemname)                                                
    as(      
    select 1 ,'AIS'  union all    
    select 2 ,'雷达应答器' union all       
    select 3 ,'示位标'  union all 
    select 4 ,'短波通信' union all 
    select 6 ,'电子标签'                
    ),
     
     用户表( UserName  , DetectID)
     as
     (
    select 'senya','0' union all
    select 'tan','1,2'  union all
    select 'wen','4,6'
    )
     
    select b.UserName  ,
           stuff((select ','+a.itemname 
                  from 项目表 a 
                  where ','+ b.UserName +',' like '%,'+cast(a.id as varchar(10))+',%' for xml path('') ),1,1,'') as UserName
    from 用户表 b

    点赞 评论 复制链接分享

相关推荐