为什么我在SQL中获得同一区域的多条记录?

时间:2014-05-19 09:38:25

标签: c# sql sql-server

这是程序

的表结果
1   4   Uttar Pradesh   32  1
2   4   Uttar Pradesh   32  1
3   4   Uttar Pradesh   32  1
4   4   Uttar Pradesh   32  1
5   4   Uttar Pradesh   32  1
6   4   Uttar Pradesh   32  1
7   4   Uttar Pradesh   32  1
8   4   Uttar Pradesh   32  1
9   4   Uttar Pradesh   32  1
10  4   Uttar Pradesh   32  1
11  4   Uttar Pradesh   32  1
12  4   Uttar Pradesh   32  1
13  29  Delhi   1   0
14  4   Uttar Pradesh   32  1
15  4   Uttar Pradesh   32  1
16  4   Uttar Pradesh   32  1
17  4   Uttar Pradesh   32  1
18  4   Uttar Pradesh   32  1
19  4   Uttar Pradesh   32  1
20  4   Uttar Pradesh   32  1
21  4   Uttar Pradesh   32  1
22  4   Uttar Pradesh   32  1
23  4   Uttar Pradesh   32  1
24  4   Uttar Pradesh   32  1
25  4   Uttar Pradesh   32  1
26  4   Uttar Pradesh   32  1
27  4   Uttar Pradesh   32  1
28  4   Uttar Pradesh   32  1
29  4   Uttar Pradesh   32  1
30  4   Uttar Pradesh   32  1
31  4   Uttar Pradesh   32  1
32  4   Uttar Pradesh   32  1
33  4   Uttar Pradesh   32  1

我想只显示One ZONE中的一条记录

  This is my Stored Procedure,

ALTER PROC [dbo].[SUMMARY_DETAIL_USER]
--   SUMMARY_DETAIL_USER 1,10,'0',''
@PAGENO     INT, 
@PAGESIZE   INT, 
@NAME       VARCHAR(50),
@SEARCH_NAME   VARCHAR(50)

AS
DECLARE @ZONE_ID INT, @count_proj int,@count_prop int

create table #temp
    (
        SNO             INT IDENTITY,
        ZONE                INT,
        CITY_NAME           VARCHAR(50),
        COUNT_CITY_PROJECT  int ,
        PROPERTY_COUNT      int
    )
IF(@NAME = '0')
BEGIN



    INSERT INTO #temp(ZONE)
    SELECT PROJ.ZONE FROM PROJECTS PROJ LEFT JOIN PROPERTIES PROP ON PROJ.ZONE = PROP.ZONE_ID
    UPDATE #temp SET CITY_NAME=(SELECT Zone_Name FROM Zone_Master WHERE Zone_ID = #temp.ZONE)
    UPDATE #temp SET COUNT_CITY_PROJECT=(SELECT COUNT(*) FROM PROJECTS  WHERE Zone = #temp.ZONE)
    UPDATE #temp SET PROPERTY_COUNT=(SELECT COUNT(*) FROM PROPERTIES  WHERE ZONE_ID = #temp.ZONE)
    SELECT * FROM #TEMP 
    SELECT LAT, LONG,STATUS,PROJECT_NAME,PROJECT_CODE FROM PROJECTS WHERE ZONE IN (SELECT ZONE FROM #temp)
    --Select @count_proj    = ( SELECT COUNT(*) FROM PROJECTS WHERE 
        SELECT COUNT(*) FROM #TEMP

END

ELSE
BEGIN


    INSERT INTO #temp(ZONE)
    SELECT PROJ.ZONE FROM PROJECTS PROJ LEFT JOIN PROPERTIES PROP ON PROJ.ZONE = PROP.ZONE_ID 
    UPDATE #temp SET CITY_NAME=(SELECT Zone_Name FROM Zone_Master WHERE Zone_ID = #temp.ZONE)
    UPDATE #temp SET COUNT_CITY_PROJECT=(SELECT COUNT(*) FROM PROJECTS  WHERE Zone = #temp.ZONE)
    UPDATE #temp SET PROPERTY_COUNT=(SELECT COUNT(*) FROM PROPERTIES  WHERE ZONE_ID = #temp.ZONE)
    SELECT * FROM #TEMP WHERE CITY_NAME LIKE '%'+@NAME+'%'enter code here
    SELECT LAT, LONG,STATUS,PROJECT_NAME,PROJECT_CODE FROM PROJECTS WHERE ZONE IN (SELECT ZONE FROM #temp)`enter code here`
    SELECT COUNT(*) FROM #TEMP 
END

2 个答案:

答案 0 :(得分:1)

使用GROUP BY PROJ.ZONE

INSERT INTO #temp(ZONE)
SELECT PROJ.ZONE 
FROM PROJECTS PROJ 
LEFT JOIN PROPERTIES PROP ON PROJ.ZONE = PROP.ZONE_ID
GROUP BY PROJ.ZONE

答案 1 :(得分:0)

您正与PROJECTS加入PROPERTIES。一个项目可能有多个属性。当您JOIN两个表时,对于满足结果集中的连接条件的每个对,将显示一条记录,因此,如果您有一个具有10个属性的项目,则该项目将重复十次。您需要使用GROUP BY子句,例如正确描述的@ user3420762(+1)。