質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

2076閲覧

MySqlで、過去最大の予約データを抽出できなくて困っています

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2015/12/09 14:36

編集2015/12/10 01:39

JAVAで、MySQLを組んでいます。
SQL文を勉強中なのですが、下記が実現できなく悩んでおります。

間違い等、ご指摘頂ければ幸いです。 ※尚、このSQLは、別の方が教えてくれたものです。

初心者なので、何をどう説明してよのか?や
元データ や 抽出データ例 などを 具体的に、表現できないので申し訳ございません。

問題点は、
1つ目.下記のSQL文で、「2.」が実現できません。
※「1.」は、実現できています。

2つ目.reservation_date は、date型ですが、start_time 項目もあり、厳密に予約を比較したいので、
reservation_date + start_time を一つにして、datetime型で、下記「2.」を実施したいのです。

■仕様

// 1.今日以降に予約があれば、全て抽出。
// ⇒尚、顧客IDで、DISTINCTは不要で、全ての予約を表示。
// delete_flag = false のみ抽出。

UNION

// 2.昨日含めて過去に予約があれば、一番最近のレコードを1件のみを抽出。
// delete_flag = false のみ抽出。

以下が、SQL文で。
このまま MySQL Frontに貼り付けると、実行できます。
しかし、
・UNIONの前のSQLに該当するレコードは抽出できますが、
・UNIONより後ろのSQLに該当するレコードは、抽出されません。


(SELECT cos., res. FROM customer cos INNER JOIN customer_reservation res ON cos.customer_id = res.customer_id
WHERE
res.reservation_date >= CURRENT_DATE
AND (cos.company_id = 41)
AND (cos.delete_flag = false)
AND (res.delete_flag = false)
AND true = (
(yomi_sei LIKE '%きたむら%')
OR (yomi_mei LIKE '%きたむら%')
)
)

UNION (SELECT cos., res. FROM customer cos INNER JOIN (

SELECT * FROM customer_reservation r1

WHERE NOT EXISTS (SELECT * FROM customer_reservation r2

WHERE

r1.customer_id = r2.customer_id

AND r1.reservation_date < CURRENT_DATE
AND r1.reservation_date < r2.reservation_date

AND (r1.company_id = 41)
AND (r1.delete_flag = false)

) ) res ON cos.customer_id = res.customer_id

WHERE
(cos.company_id = 41) AND (cos.delete_flag = false) AND (res.delete_flag = false)
AND true = (
(yomi_sei LIKE '%きたむら%') OR (yomi_mei LIKE '%きたむら%')
)
);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanat

2015/12/09 14:50

こちらの質問が他のユーザから「質問の範囲が広すぎる」という評価を受けています わからない点を明確にし、調査したこと・試したことと共に記入していただくと、回答が得られやすくなります。
退会済みユーザー

退会済みユーザー

2015/12/09 17:47

こちらの質問が他のユーザから「質問の範囲が広すぎる」という評価を受けています わからない点を明確にし、調査したこと・試したことと共に記入していただくと、回答が得られやすくなります。
hsk

2015/12/09 23:56 編集

SQL文の箇所を ```sql (SQL文) ``` で括っていただけるでしょうか?自動整形されます。良回答を得られやすくなりますよ。
退会済みユーザー

退会済みユーザー

2015/12/10 01:06

承知いたしました。 ご指摘ありがとうございます。 お手数をお掛け致しました。
hyper-drums-ko

2015/12/10 01:13

こちらの質問が他のユーザから「質問の範囲が広すぎる」という評価を受けています わからない点を明確にし、調査したこと・試したことと共に記入していただくと、回答が得られやすくなります。
退会済みユーザー

退会済みユーザー

2015/12/10 01:41

↑この方は、いつも私のストーカーです。いつも読んで通報していただいております。ありがとうございます。
eripong

2015/12/10 01:48

hskさんの指摘はその通りと思います。シンタックスハイライトというteratailの機能で、色づけなどもされてコードが見やすくなります。terminatorさんの回答も、同様の内容です。誰が投稿したかでなく、内容の是非で対応した方が良いのではないでしょうか?
hsk

2015/12/10 01:55

アカウントが乗っ取られているということですか?不正なことをされているのでしたら、運用の方に報告することをお勧めします。
hsk

2015/12/10 02:00 編集

それとも、私の修正依頼が迷惑だったということでしょうか?MioAsakuraさんに関連する私の投稿は今回が初めてだとと記憶していますが、MioAsakuraさんのご質問を見ることは以降差し控えます。
退会済みユーザー

退会済みユーザー

2015/12/10 02:18 編集

いえ、hsk様には、とても感謝しておりますので、 誤解なされないようにしてください。 他の方です。IDは予想ついていますが、 運営様とすでにやり取りをしており、その方のIDを凍結するか、 私への質問への書き込みを参照不可で且書き込みも不可へ、多重のブロックするかを検討していただいております。 hskのご回答は、適切で、初心者の私へのアドバイスをとても感謝しております。 今後共、引き続きよろしくお願い致します。
hsk

2015/12/10 02:19

了解しました。身に覚えのないのにネット上で絡まれると厄介ですね...お察しします。
izkn

2015/12/10 04:40

こちらの質問が他のユーザから「質問の範囲が広すぎる」という評価を受けています わからない点を明確にし、調査したこと・試したことと共に記入していただくと、回答が得られやすくなります。
guest

回答2

0

イメージ説明

図解までしたのに、それでも使い方わかんないのか…

投稿2015/12/09 19:32

編集2015/12/10 05:11
terminator

総合スコア266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

SQLと説明が難しいので、回答不可と判断し、クローズ。

投稿2015/12/10 09:09

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問