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

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

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

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

Q&A

解決済

3回答

197閲覧

Mysqlに関して 従業員情報の抜き出し

amaturePy

総合スコア131

MySQL

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

0グッド

0クリップ

投稿2019/04/28 15:58

編集2019/04/28 16:51

イメージ説明
Mysqlに関しての質問です。
恥ずかしながらこれに丸一日使い解答までたどり着けず質問するに至った次第です。
問題はCONCATを使用して雇用日(hire_date)が2015/1/1~2015/3/31のemployeeの
first_nameとlast_nameを出せという問題です。
お力を借りできれば幸いです。

実施したコードは以下の通りです。
SELECT CONCAT('first_name','last_name') FROM employee WHERE hire_date BETWEEN '2015/1/1' AND '2015/3/31' ;

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

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

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

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

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

archiver

2019/04/28 16:02

どの辺りがわからないのでしょうか? 流石に雇用日で抽出するまではわかりますよね?
amaturePy

2019/04/28 16:09

私のコードがこちらになります。 SELECT CONCAT('first_name','last_name') FROM employee WHERE hire_date BETWEEN '2015/1/1' AND '2015/3/31' ; 稚拙で申し訳ありません。
amaturePy

2019/04/28 16:11

コードは通るのですが、肝心のデータが拾えない状態です。 カラム欄が空欄の状態で結果が出てしまう状態です。。。
archiver

2019/04/28 16:14

hire_dateの型って何でしょう? (普通に考えれば日付型だと思いますが)
amaturePy

2019/04/28 16:16

VARCHARです。。。
amaturePy

2019/04/28 16:24

このコードを見て頂いて、どうでしょうか? パッと見て何かおかしいと思う箇所はありますか? ご教授いただけないでしょうか?
aikon_marimo

2019/04/28 16:49

実施した内容(上記のSQL文)は質問本文に記載ください。
guest

回答3

0

SQL

1SELECT CONCAT('first_name','last_name') 2FROM employee 3WHERE hire_date BETWEEN '2015/1/1' AND '2015/3/31'

添削します。

先ず、CONCAT('first_name','last_name')は単なる文字列の結合になっています。
カラムの内容を結合するのですから、CONCAT(first_name, last_name)としなければなりません。

次に、hire_dateVARCHARという事なので、日付の書式の文字列が格納されているのですから、
一致する内容で無いと抽出はされませんね。

分かり易くするためにデータの内容で表現すると、

SQL

1 where '2015-04-10' BETWEEN '2015/1/1' AND '2015/3/31'

といった問い合わせになっていますので、一致する事はありません。
文字列として日付の書式を合わせる必要があります。

SQL

1 where hire_date BETWEEN '2015-01-01' AND '2015-03-31'

投稿2019/04/28 17:16

sazi

総合スコア25173

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

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

amaturePy

2019/04/28 17:22

なるほど、気をつけるべき所がこのような比較的短いコードの中にもあったのですね。 大変勉強になります。 sql奥が深いですね。
guest

0

ベストアンサー

動かせてませんが以下が誤ってるかと。

テーブル名
誤:employee
正:employees

日付
誤:2015/1/1
正:2015-01-01
もう片方の日付も。

CONCATの引数
誤:CONCAT('first_name','last_name')
正:CONCAT(first_name,last_name)

ついでに、カラムfirst_name、last_nameにnullが入ることがあるかどうか、nullの場合の挙動はどうなるべきかも確認必要かと思います。

投稿2019/04/28 16:53

編集2019/04/28 16:55
aikon_marimo

総合スコア1083

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

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

amaturePy

2019/04/28 16:58

ご意見ありがとうございます! テーブル名に関しては私の打ち間違えで employeeの方で登録しています。 申し訳ありません。CONCAT内の修正ありがとうございます。 大変恐縮ですが、上記コードを試したのですがエラーが出てしまい入りませんでした。 CONVERT!勉強になります。
aikon_marimo

2019/04/28 17:06

コメント二人分こっちに記載してませんか?
amaturePy

2019/04/28 17:07

申し訳ありませんでした!
amaturePy

2019/04/28 17:08

使い慣れておらず。
aikon_marimo

2019/04/28 17:11

以下でうまくいきまんか? SELECT CONCAT(first_name,last_name) FROM employee WHERE hire_date BETWEEN '2015-01-01' AND '2015-03-31';
amaturePy

2019/04/28 17:15

出ました! すごい。。。 0101のように記載するのですね! ありがとうございます!
guest

0

こうかな。

MySQL

1SELECT CONCAT('first_name','last_name') 2 FROM employee 3 WHERE CONVERT(datetime,hire_date) 4BETWEEN CONVERT(datetime,'2015/1/1') AND CONVERT(datetime,'2015/3/31')

BETWEEN演算子で指定できるのは数値(日付型は日付シリアル値になる気がする)なので、hire_dateや絞り込む日付を数値化して比較するようにすればいける気がします。

とりあえず、今回はMySQL上とのことなので、CONVERTを使って変換していますが、ここはRDBMSによって異なるところなので、他のRDBMSで使う場合は、適宜、変更する必要があります。

投稿2019/04/28 16:51

archiver

総合スコア1557

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

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

amaturePy

2019/04/28 17:07

ご意見ありがとうございます! テーブル名に関しては私の打ち間違えで employeeの方で登録しています。 申し訳ありません。CONCAT内の修正ありがとうございます。 大変恐縮ですが、上記コードを試したのですがエラーが出てしまい入りませんでした。 CONVERT!勉強になります。
archiver

2019/04/28 17:11

どんなエラーが出ました? と言っても、こちらも動かせる環境がないので、標準的なSQLとMySQLの方言を探りながらになりますが。
amaturePy

2019/04/28 17:16

SELECT CONCAT(first_name,last_name) FROM employee WHERE hire_date BETWEEN '2015-01-01' AND '2015-03-31';で解答を出すことができました! こちらの不十分な説明の中様々なご指導ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問