我碰到一个问题,很纠结,来请教一下大家我有一个故障表 tabguzhang 为父表, 一个故障征兆表 tabZhengZhao 为子表
一个故障,对应 N 个征兆。我现在要做一个查询,用户录入 4 个征兆,要求搜索出 有这 4 个征兆的所有故障故障表结构:
id  varchar(50)
note varchar(50)征兆表结构:
id  varchar(50)
GuzhangID varchar(50)
zhengzhao varchar(100)请问这个sql怎么写。谢谢

解决方案 »

  1.   

    select G.* from  [ZhengZhao] Z 
    inner  join [GuZhang] G  on G.ID=Z.GuzhangID
    WHERE zhengzhao=4 
    ?????
      

  2.   


    SELECT * FROM  [tabguzhang] G WHERE G.ID IN (SELECT G.ID FROM [tabzhengzhao] WHERE zhengzhaoID=4)
      

  3.   

    SELECT * FROM  [tabguzhang] G WHERE G.ID IN (SELECT G.ID FROM [tabzhengzhao] WHERE zhengzhaoID in (1,2,3,4))
      

  4.   


    SELECT A.* FROM 故障表 AS A
    INNER JOIN
    (
    SELECT B.GUZHANGID,COUNT(1) AS NUM FROM 征兆表 AS B
    WHERE B.ZHENGZHAO IN('A','B','C','D')
    GROUP BY B.GUZHANGID
    ) AS C
    ON A.ID=C.GUZHANGID
    WHERE C.NUM >= 4
    试试 A B C D分别代表用户录入的4个征兆