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

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

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

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1590閲覧

MYSQLでJOINして、結合したテーブルの最新情報のみ表示したい

natlpush

総合スコア32

MySQL

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/12/25 12:28

MYSQLでJOINしたテーブルからLIMIT1で最新情報を取得したいのですが、うまくいきません。どなたかお詳しい方、お力添えお願いいたします。

2つのテーブルがあります。

テーブルA
ID name
1 Aさん
2 Bさん
3 Cさん

テーブルB
ID date result
1 2016-12-20 来店
1 2016-12-25 入会
2 2015-12-23

求めたい結果は下の通りです

ID name ID date result
1 Aさん 1 2016-12-25 入会
2 Bさん 2 2015-12-23 電話
3 Cさん NULL NULL NULL

SELECT * FROM A LEFT JOIN B ON A.ID=B.ID
上のSQLでJOINすると

ID name ID date result
1 Aさん 1 2016-12-20 来店
1 Aさん 1 2016-12-25 入会
2 Bさん 2 2015-12-23 電話
3 Cさん NULL NULL NULL

このようになってしまいます。
Bテーブルの最新情報のみ表示させたいのですが、どのようにすればよろしいでしょうか。サブクエリを使うらしいというのまではわかったのですが、上手く行きません。

どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

作成してみました。

sql

1create table tblA (id int, name text); 2create table tblB (id int, dateB date, result text); 3 4 select t0.id, name, dateB, result from tblA t0 left join 5 (select id, dateB, result from tblB t1 join 6 (select id, max(dateB) dateB from tblB group by 1) t2 using(id,dateB) 7 ) t3 using(id);
+------+-----------+------------+--------+ | id | name | dateB | result | +------+-----------+------------+--------+ | 1 | Aさん | 2016-12-25 | 入会 | | 2 | Bさん | 2016-12-23 | 電話 | | 3 | Cさん | NULL | NULL | +------+-----------+------------+--------+

投稿2016/12/25 13:47

A.Ichi

総合スコア4070

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

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

natlpush

2016/12/26 01:34

できました。 理解するのに時間がかかってしまい、お礼が遅れてすみません。 ありがとうございます。
guest

0

sql

1SELECT a.*, b1.* 2FROM table_a AS a 3LEFT OUTER JOIN table_b AS b1 ON a.ID = b1.ID 4LEFT OUTER JOIN table_b AS b2 ON b1.ID = b2.ID AND b1.date < b2.date 5WHERE b2.ID IS NULL;

http://sqlfiddle.com/#!9/3504c9/13/0

投稿2016/12/25 12:52

KiyoshiMotoki

総合スコア4791

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

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

natlpush

2016/12/26 01:21

上手く行きました。 とてもきれいでシンプルなやり方があるんですね。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問