日期:2014-05-18  浏览次数:20527 次

求助,Sql语句问题
我碰到一个问题,很纠结,来请教一下大家

我有一个故障表 tabguzhang 为父表, 一个故障征兆表 tabZhengZhao 为子表
一个故障,对应 N 个征兆。

我现在要做一个查询,用户录入 4 个征兆,要求搜索出 有这 4 个征兆的所有故障

故障表结构:
id varchar(50)
note varchar(50)

征兆表结构:
id varchar(50)
GuzhangID varchar(50)
zhengzhao varchar(100)

请问这个sql怎么写。谢谢


------解决方案--------------------
SQL code

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

------解决方案--------------------
SQL code

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