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

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

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

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

Q&A

解決済

2回答

994閲覧

MySQL 今日明日のデータのみ取得したい

stray_sheep

総合スコア2

MySQL

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

0グッド

0クリップ

投稿2022/10/25 07:08

編集2022/10/25 07:31

実現したいこと

最近MySQLの勉強を始めた初心者です。
下記条件で②のデータを抽出したいのですがうまくいきません。

データ抽出条件
①2つのテーブルから「address_no」が一致しているデータのみ抽出
②今日明日のデータのみ抽出

試したこと

mysql

1SELECT * FROM item_masters where address_no in (select address_no from address_masters);

上記のSQLで、①の2つのテーブルから「address_no」が一致するデータを抽出できました。

①で抽出したデータたちです

+----+------------+---------------------+------------+---------------------+---------------------+ | id | address_no | time | speed | created | modified | +----+------------+---------------------+------------+---------------------+---------------------+ | 1 | 011001 | 2022-10-25 00:00:00 | 3 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 2 | 011001 | 2022-10-25 01:00:00 | 3 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 3 | 011001 | 2022-10-25 02:00:00 | 4 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 4 | 011001 | 2022-10-25 03:00:00 | 3 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 5 | 011001 | 2022-10-25 04:00:00 | 4 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 6 | 011001 | 2022-10-25 05:00:00 | 2 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 7 | 011001 | 2022-10-25 06:00:00 | 3 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 8 | 011001 | 2022-10-26 00:00:00 | 3 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 9 | 011001 | 2022-10-26 01:00:00 | 3 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 10 | 011001 | 2022-10-26 02:00:00 | 4 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 11 | 011001 | 2022-10-26 03:00:00 | 4 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 12 | 011001 | 2022-10-26 04:00:00 | 5 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 13 | 011001 | 2022-10-26 05:00:00 | 5 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 14 | 011001 | 2022-10-26 06:00:00 | 5 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 15 | 011001 | 2022-10-27 00:00:00 | 5 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 16 | 011001 | 2022-10-27 01:00:00 | 6 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 17 | 011001 | 2022-10-27 02:00:00 | 5 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 18 | 011001 | 2022-10-27 03:00:00 | 5 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 19 | 011001 | 2022-10-25 04:00:00 | 4 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | | 20 | 011001 | 2022-10-25 05:00:00 | 5 | 2022-10-25 11:45:15 | 2022-10-25 11:45:15 | ~~~ +----+------------+---------------------+------------+---------------------+---------------------+

ここからさらに「time」が今日明日のデータで絞ってデータを抽出したいのですがうまくいきません。
有識者の方、教えてくださると助かります。(>_<)
よろしくお願いいたします。

補足

ネットで調べてみて書いてみたのですが、エラーが出ちゃいました。

ERROR 1317 (70100): Query execution was interrupted MariaDB [sql]> SELECT * FROM item_masters where address_no between (curdate() = date(time)) and (datediff(time, curdate()) = 1) in (select address_no from address_masters); Empty set, 7 warnings (0.08 sec)

テーブルの定義です

MariaDB [sql]> desc item_masters; +----------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | address_no | char(6) | NO | MUL | NULL | | | time | datetime | NO | MUL | NULL | | | speed | varchar(16) | YES | | NULL | | | created | datetime | YES | | NULL | | | modified | datetime | YES | | NULL | | +----------------+------------------+------+-----+---------+----------------+

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

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

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

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

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

phper.k

2022/10/25 07:27 編集

> ネットで調べてみて書いてみたのですが、エラーが出ちゃいました。 どんなエラーが出たのかを記載するのは質問時の基本。 必ず、「コピペ」でそのまま記載してください あと、SQL関連の質問では、テーブルの定義を示してください。カラム名とデータ型がわかるように。
stray_sheep

2022/10/25 07:27

失礼いたしました。 追記しました。
yambejp

2022/10/25 07:27

サブクエリーをinで絞っているのが状況がわかりませんが SELECT * FROM item_masters as t1 inner join address_masters as t2 on t1.address_no=t2.address_no 的なことじゃないのでしょうか?
yambejp

2022/10/25 07:43

定義をコピペするより、mysqldumpで出力したテーブルデータを貼ってもらったほうがよいかも
guest

回答2

0

sql

1select * from item_masters 2where date(`time`) in ( 3 curdate(), 4 adddate(curdate(), INTERVAL 1 DAY) 5)

time が予約語だから `` バククォートで囲まないと異なる処理して、タイムアウトになってそう

投稿2022/10/25 07:40

phper.k

総合スコア3923

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

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

0

自己解決

phper.kさんの回答で取れました!ありがとうございました!

SELECT * FROM item_masters where date(`time`) in (curdate(),adddate(curdate(), INTERVAL 1 DAY)) and address_no in ( SELECT address_no FROM address_masters;

投稿2022/10/25 08:11

編集2022/10/26 00:12
stray_sheep

総合スコア2

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問