2014-05-19 64 views
0

這是程序表結果爲什麼我在SQL中爲同一區域獲取多個記錄?

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 

我想從一個只顯示一個記錄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 '%'[email protected]+'%'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

你嘗試過使用'distinct'嗎? – Max

+0

您加入項目的屬性。如果你運行'SELECT PROJ.ZONE,PROP。* FROM PROJECTS PROJ LEFT JOIN PROPERTIES PROP PROJ.ZONE = PROP.ZONE_ID',你會得到一個完美的視圖,你爲什麼得到多行... – rene

+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 
0

您與加盟PROJECTSPROPERTIES。一個項目可能有多個屬性。當兩個表格中的每一對符合結果集合中的連接條件時,都會出現一條記錄,因此如果您有一個具有10個屬性的項目,則該項目將重複十次。您需要使用GROUP BY子句,如正確描述的@ user3420762(+1)。

相關問題