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

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

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

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

解決済

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

stray_sheep
stray_sheep

総合スコア2

MySQL

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

2回答

0グッド

0クリップ

289閲覧

投稿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 | | +----------------+------------------+------+-----+---------+----------------+

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

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で出力したテーブルデータを貼ってもらったほうがよいかも

回答2

2

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

総合スコア3695

stray_sheep, m.ts10806👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

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

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

MySQL

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