2014-07-18 5 views
0

필요에 따라 쿼리를 실행하는 데 문제가 있습니다. 나는 우편물을위한 레이블 시트를 만들고 이메일 주소가없는 사람들 만 선택하고 싶습니다. 또한 각 주소/가족에게 1 개의 우편물을 보내고 싶습니다. 다음 select 문은 필요한 모든 필드를 반환합니다.SQL Select Query Trouble with unique values ​​

SELECT [Family Members].[Family ID] 
     ,[Family Members].[First Name] 
     ,[Family Members].[Last Name] 
     ,[Family Members].Email 
     ,[Master Record].[Address 1] 
     ,[Master Record].[Address 2] 
     ,[Master Record].City 
     ,[Master Record].STATE 
     ,[Master Record].Zipcode 
    FROM [Master Record] 
    LEFT JOIN [Family Members] 
    ON [Master Record].[Family ID] = [Family Members].[Family ID]; 

이제 내 테이블에 대해 조금. "가족 ID"는 키이고 각 고유 한 가족 ID는 고유 한 주소를가집니다. 그러나 각 가족 구성원은 [가족 구성원] 테이블에 포함 된 여러 구성원을 가지고 있으며 각 가족 구성원은 전자 메일 주소가 있거나 없을 수 있습니다. 가족 중 한 명에게 이메일 주소가 기재되어있는 경우 종이 우편물을 보내지 않으므로 테이블에서 삭제하고 싶습니다. 또한 "가족 ID"를 기반으로 한 쿼리에서 여러 결과를보고 싶지 않습니다.

이 쿼리의 결과에는 고유 한 "가족 ID"값이 있어야하며 전자 메일 주소가있는 가족 구성원이 없어야합니다. 파일.

가능성이 있습니다. 감사.

+3

SQL Server/Sybase/MS Access 구문 표기 규칙을 사용하고 있으며 질문에 MySQL이라는 레이블이 지정되어 있습니다. 어떤 데이터베이스를 실제로 사용하고 있습니까? –

+0

Microsoft Access 데이터베이스입니다. 죄송합니다 그 비트를 추가하는 것을 잊었습니다. – user2316117

답변

0

다음은 나를 위해 효과가있는 것 같습니다. 비록 모든 Max() 함수의 사용에 대해서는 약간 불안합니다. 나는 여기에 이것을 게시하고 누군가가 좀 더 우아한 해결책을 가지고 있는지 살펴볼 것입니다.

SELECT [Master Record].[Family ID], Max([Master Record].[Last Name]) AS [MaxOfLast Name], 
Max([Master Record].[Address 1]) AS [MaxOfAddress 1], Max([Master Record].[Address 2]) AS 
[MaxOfAddress 2], Max([Master Record].City) AS MaxOfCity, Max([Master Record].State) AS 
MaxOfState, Max([Master Record].Zipcode) AS MaxOfZipcode, Max([Family Members].Email) AS 
MaxOfEmail 
FROM [Master Record] LEFT JOIN [Family Members] ON [Master Record].[Family ID] = [Family 
Members].[Family ID] 
GROUP BY [Master Record].[Family ID] 
HAVING (((Count([Family Members].Email))=0)); 
0

당신은이 이메일에 회원이 없습니다 가족에 하나 이상의 회원이있는 경우에는 확인되지 않은 가족 회원의 상세 정보를 반환합니다, 마음에

GROUP BY [Family Members].[Family ID] 
    HAVING COUNT([Family Members].Email) = 0 

곰을 추가 할 수 있습니다.

또한 JOIN이 아닌 LEFT JOIN을 사용하여 가족 구성원이없는 마스터 레코드를 제외하고자 할 수 있습니다.

+0

그룹 문에 모든 필드를 넣어야하는 것처럼 보입니다. 그렇지 않으면 오류가 발생합니다. 이 경우 가족 ID를 기반으로 중복 항목을 제거하지 않는 것 같습니다. – user2316117

+0

아, 죄송합니다. MySQL에 태그가 달린이 질문에 답했습니다. – Arth