私はいくつかのテーブルから情報を取り出そうとしていますが、人が複数のエントリ、すなわち複数の情報行を持っている場合にのみ行を表示したいと考えています特定のフィールドが複数の行にしか現れない行を選択
これはそのままのコードです。私は様々な方法を使ってHAVING count(person)> 1を使用していますが、それを正しく得ることはできません。
すべてのご協力をよろしくお願いいたします。
SELECT DISTINCT
table1.person
, table1.id
, table1.type
, table1.active
, table2.stage
, table3.start
, table3.end
FROM
people table1
, storyType table2
, storyContract table3
WHERE
table1.type = table2.type_id
AND table2.stage = 1
AND table1.id = table3.contract_id
AND table3.start > '2015-01-01 00:00:00'
現在の結果は
person id start end type active stage
Keith Richards 202971 24/11/2015 00:00 07/03/2016 00:00 8 1 Amber
Keith Richards 218325 07/03/2016 00:00 07/04/2016 00:00 10 1 Red
Steve Perryman 217788 02/03/2016 00:00 04/07/2016 00:00 8 1 Amber
Cyril Knowles 202438 20/11/2015 00:00 24/06/2016 00:00 10 1 Red
Pat Jennings 215324 11/02/2016 00:00 29/08/2016 00:00 8 1 Amber
Alan Gilzean 200575 06/11/2015 00:00 08/11/2015 00:00 8 1 Amber
Bill Wyman 203575 27/11/2015 00:00 14/01/2016 00:00 8 1 Amber
Bill Wyman 209740 14/01/2016 00:00 10/03/2016 00:00 9 1 Green
Bill Wyman 219330 11/03/2016 00:00 01/09/2016 00:00 10 1 Red
Mike England 209288 12/01/2016 12:54 01/02/2016 12:54 8 1 Amber
Charlie Watts 198363 14/10/2015 12:40 05/11/2015 00:00 8 1 Amber
Charlie Watts 200281 05/11/2015 00:00 13/06/2016 00:00 10 1 Red
Brian Jones 208265 06/01/2016 14:38 04/02/2016 00:00 8 1 Amber
Brian Jones 214052 04/02/2016 00:00 17/03/2016 00:00 9 1 Green
Brian Jones 220425 17/03/2016 00:00 04/07/2016 00:00 10 1 Red
Martin Chivers 209195 12/01/2016 00:00 04/07/2016 00:00 8 1 Amber
Alan Mullery 212919 29/01/2016 00:00 04/07/2016 00:00 8 1 Amber
Mick Jagger 199134 20/10/2015 00:00 17/12/2015 00:00 8 1 Amber
Mick Jagger 212690 28/01/2016 00:00 24/06/2016 00:00 8 1 Amber
Martin Peters 195833 30/09/2015 00:00 04/07/2016 00:00 8 1 Amber
結果は、カウント基準で結果を取得し、それに参加することのステートメントを使用し
person id start end type active stage
Keith Richards 202971 24/11/2015 00:00 07/03/2016 00:00 8 1 Amber
Keith Richards 218325 07/03/2016 00:00 07/04/2016 00:00 10 1 Red
Bill Wyman 203575 27/11/2015 00:00 14/01/2016 00:00 8 1 Amber
Bill Wyman 209740 14/01/2016 00:00 10/03/2016 00:00 9 1 Green
Bill Wyman 219330 11/03/2016 00:00 01/09/2016 00:00 10 1 Red
Charlie Watts 198363 14/10/2015 12:40 05/11/2015 00:00 8 1 Amber
Charlie Watts 200281 05/11/2015 00:00 13/06/2016 00:00 10 1 Red
Brian Jones 208265 06/01/2016 14:38 04/02/2016 00:00 8 1 Amber
Brian Jones 214052 04/02/2016 00:00 17/03/2016 00:00 9 1 Green
Brian Jones 220425 17/03/2016 00:00 04/07/2016 00:00 10 1 Red
Mick Jagger 199134 20/10/2015 00:00 17/12/2015 00:00 8 1 Amber
Mick Jagger 212690 28/01/2016 00:00 24/06/2016 00:00 8 1 Amber
現在の質問には答えられませんが、実際には "現代的"なANSI-92スタイルの結合を使用してください。彼らは25年以上前から利用されてきました。 http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx –
Seanに感謝します。私はリンクのように "現代的な"結合を使う傾向がありますが、何らかの理由でそれを凝縮してStackの他の例を見ると、私はいくつかの "以前の"スタイルに出くわしました。質問を確定するときに気をつけてください。 – MisterO