-1

以前にSQLで多くの結合を行ったことがありますが、これは機能したくありません-デカルト積を取得していますが、その理由がわかりません。(このコンテキストでは) 2 つのテーブルがあります。1 つは予定用で、もう 1 つは顧客用です。CustomerId は顧客テーブルの主キーであり、予定テーブルの外部キーです。

私が達成しようとしているのは、顧客の名前 (顧客テーブルに保存されている) とともにすべての予定を表示するクエリを実行することです。

これは私のクエリです:

    SELECT a.AppointmentId
    ,a.Subject
    ,a.StartDateTime
    ,c.CustomerId
    ,c.FirstName
    ,c.lastname
FROM shared.Appointment a
INNER 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;

結果は恐ろしいデカルト積であり、選択部分に名/姓を追加し始めたときにのみ発生します。

誰かが私が間違っていることを見ることができますか?

4

2 に答える 2

1

データベース上の他のテーブルで同様の、しかしより単純なクエリを試みたところ、まだデカルト積が得られています。クエリではなく、データベースに問題があると思います。スタック オーバーフローの誰かが、データベースを見ずにこの問題を解決できるかどうかはわかりません。

とにかくありがとう。

于 2013-02-11T12:37:29.647 に答える
1

予期しないデカルト積は、単純なタイプミスが原因であることがよくあります。

これの代わりに:

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

おそらくあなたはこれをタイプしました:

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

1キャラでやってくれます。

于 2013-02-11T12:55:36.963 に答える