2016-05-13 3 views
0
SELECT p.ticket AS posted, 
     e.ticket AS settled, 
     Sum(e.amount) 
FROM post AS p 
     LEFT JOIN settle AS e 
       ON p.ticket = e.ticket 
WHERE p.date = '2016-05-10 00:00:00.000' 
GROUP BY p.pticket, 
      e.eticket 
ORDER BY posted 

値を左テイクIはが原因であるが、私は非常に多くのバリエーションを試みたグループまたはは、二つのテーブルの行であることを理解します
は=(項目+税= ))
が除外ヌルに参加左及び

だから2番目の表は、I合計2列を有しています。それは多くの情報を持っていると私は日付が必要と私は日付と他の場所では "null"を試してみましたが、この権利を得ることはできません。 nullの代わりに、左テーブルの値が一致するかのように表示されます。

+1

期待どおりの観察結果といくつかのテーブル構造を見せることができますか?あなたはおそらく 'COALESECE(sum(e.AMOUNT)、0)'のようなことをしたいと思っていますが、データがなければ確実に言うことは難しいです。 –

+0

コード、文法、タグ – rsjaffe

+0

は、現在の出力と予想される出力を表示します。データサンプルも素晴らしいでしょう。 –

答えて

0

だからわかった!このサイトを愛している人のために入力を残しておきたいのですが、私の情報が正確ではない場合は、私が詳細に説明したいと思っていますが、基本的に、私が理解していることとSQL Fundamentalsから、したがって、私は「左外を参加」必要があります:

SELECT p.ticket AS posted, 
      e.ticket AS settled, 
      Sum(e.amount) 
    FROM post AS p 
      LEFT JOIN settle AS e 
      ON p.ticket = e.ticket 
    WHERE p.date = '2016-05-10 00:00:00.000' 
    GROUP BY p.pticket, 
      e.eticket 
    ORDER BY posted 

を私のために際立っていたと私は私がNULLで合流チェックに役立ちます良いルールはWhere句だけテーブルに条件を持つべきであるということですNULLは含まれないので、外側の行は保持されますが、 "is null"は例外です。保存されていないテーブルのカラムでそれを使うこともできますが、それでもnullが得られます。

+0

単語「外側」はオプションです。それは行動の変化を引き起こさないはずです。 where節については、左結合の右側にあるテーブルの結果を制限し、nullを保持する場合は、ON句に制限critieraをANDとして配置する必要があります。 'p.ticket = e.ticket = e.ticketとe.attribute = 'value'どこにp.date =日付' – xQbert

+0

ありがとうございました!もともと私はそれも読んでいました、その外側はオプションです、再試行しますが、行、それは少し意味があるように思えた、私はチャンスを得るときに試して複製するだろうが、私の答えの思考プロセスが私を助けてくれた、もう一度感謝! – berni3mack

関連する問題