2

クエリを手伝ってください。テーブルを用意してください:

id | u_id | start_date |  end_date  |
-------------------------------------
01 |   7  | 2012-09-05 | 2012-09-23 |
02 |   4  | 2012-09-10 | 2012-09-15 |
03 |   4  | 2012-09-27 | 2012-10-05 |
04 |   5  | 2012-10-01 | 2012-10-09 |
05 |   4  | 2012-10-10 | 2012-10-15 |
06 |   7  | 2012-10-23 | 2012-11-05 |
07 |   5  | 2012-11-05 | 2012-11-12 |
08 |   4  | 2012-11-08 | 2012-11-10 |

month=10 で、最大 "start_date" が前月から、最小 "end_date" が翌月からすべてのレコードを選択したいと考えています。結果として必要

id | u_id | start_date |  end_date  |
-------------------------------------
03 |   4  | 2012-09-27 | 2012-10-05 |
04 |   5  | 2012-10-01 | 2012-10-09 |
05 |   4  | 2012-10-10 | 2012-10-15 |
06 |   7  | 2012-10-23 | 2012-11-05 |

このクエリで何が間違っているのかわかりません

SELECT start_date, end_date
FROM _xata_owner 
INNER JOIN (
   SELECT max(start_date) AS date FROM _xata_owner
   GROUP BY DATE_FORMAT(start_date, "%m")
   ) b ON month(b.date)=09
WHERE month(start_date)=10
ORDER BY start_date

ありがとう!

4

1 に答える 1

0

あなたが望んでいるのは:

  • start_date の月が 10 であるレコードを取得します。

    SELECT id, u_id, start_date, end_date FROM _xata_owner WHERE month(start_date)=10

  • 「start_date」が前月である最大の「end_date」を取得します。

    SELECT id, u_id, start_date, end_date FROM _xata_owner WHERE month(start_date) = 09 AND end_date = (SELECT MAX(end_date) FROM _xata_owner WHERE month(start_date) = 09)

  • 「end_date」が翌月である分「end_date」を取得します。

    SELECT id, u_id, start_date, end_date FROM _xata_owner WHERE month(end_date) = 11 AND end_date = (SELECT MIN(end_date) FROM _xata_owner WHERE month(end_date) = 11)

それらをすべてまとめる:

(SELECT id, u_id, start_date, end_date
FROM _xata_owner 
WHERE month(start_date)=10)
UNION
(SELECT id, u_id, start_date, end_date
FROM _xata_owner
WHERE month(start_date) = 09 AND end_date =
        (SELECT MAX(end_date) FROM _xata_owner WHERE month(start_date) = 09))
UNION
(SELECT id, u_id, start_date, end_date
FROM _xata_owner
WHERE month(end_date) = 11 AND end_date =
        (SELECT MIN(end_date) FROM _xata_owner WHERE month(end_date) = 11))

とにかく、これはあなたが望むもののように聞こえます。あなたの質問は少し混乱しています。

于 2012-10-10T22:51:25.853 に答える