2013-02-11 2 views
-1

전에 SQL에서 많은 조인을했는데이 작업을 원하지 않습니다. 저는 카티 션 제품을 얻고 있으며 그 이유는 모르겠습니다. 두 테이블 (이 상황에서)은 하나는 약속을위한 것이고 다른 하나는 고객을위한 것입니다. CustomerId는 고객 테이블의 기본 키이며 약속 테이블의 외래 키입니다.SQL 원하지 않는 데카르트 제품

내가 달성하고자하는 것은 고객의 NAME (고객 테이블에 저장 됨)과 함께 모든 약속을 표시하는 쿼리를 실행하는 것입니다.

select a.AppointmentId, 
     a.Subject, 
     a.StartDateTime, 
     c.CustomerId, 
     c.FirstName, 
     c.lastname 
from shared.Appointment a 
    join shared.Customer c on a.CustomerId=c.customerid 
where a.BusinessCode='bp' 
    and StartDateTime > '2013-02-11' 
    and a.CustomerId > 0 
group by c.customerid, 
     a.AppointmentId, 
     a.Subject, 
     a.CustomerId, 
     a.StartDateTime, 
     c.FirstName, 
     c.lastname 
order by a.AppointmentId 

결과는 내가 선택 부분으로 첫 번째/마지막 이름을 추가하기 시작하면 발생합니다 끔찍한 직교 제품입니다 :

내 쿼리입니다.

내가 뭘 잘못하고 있는지 누가 알 수 있습니까? 내가 바보가되는거야?

편집 :이 질문이 -1.1d 인 이유는 무엇입니까? 제 질문이 나쁘다면 왜 그런지 말해 주시면 개선 할 것입니다. 익명 -1은 좋지 않습니다. (

+0

쿼리는 'where and StartDateTime>'2013-02-11'' 오류를 반환해야합니다. 실제 검색어에 붙여 넣을 수 있습니까? –

+0

와우. 내 실수. 나는 복사/붙여 넣기를했지만 질문과 관련이없는 절을 꺼 냈습니다. 따라서 왜 '와'가 여전히 거기에 있었습니까? –

+3

이것이 어떻게 데카르트 제품을 만들 수 있는지 보지 못했습니다. 재현 할 SQLFiddle? 고객/약속 당 하나의 행만 가져오고 있지 않습니까? 그것이 당신이 겪고있는 경우 각 약속에 대한 성/성을 받게됩니다. – Bridge

답변

1

데이터베이스의 다른 테이블과 비슷하지만 훨씬 간단한 쿼리를 시도했지만 여전히 카티 션 제품을 얻고 있습니다. 데이터베이스에 문제가 있다고 생각합니다. . 쿼리 내가 스택 오버 플로우에 반드시 누군가가 가능성이 데이터베이스를 보지 않고이 문제를 해결할 수 아니에요

감사 어쨌든 사람

1

예상치 못한 직교 제품은 단순한 오타로 인해 종종있다 :.. 대신

이 중 :

from shared.Appointment a 
    join shared.Customer c on a.CustomerId=a.customerid 

하나의 문자가 그것을 할 것입니다 :

from shared.Appointment a 
    join shared.Customer c on a.CustomerId=c.customerid 
아마 당신은이를 입력했습니다.

+0

시도해 줘서 고마워,하지만 그걸 세 번 확인해 봤어. 위의 쿼리는 정확히 복사/붙여 넣기됩니다. :( –