[前][次][番号順一覧][スレッド一覧]

mysql:5340

From: Koji Yamamoto <Koji Yamamoto <yamamoto@xxxxxxxxxx>>
Date: Fri, 12 Apr 2002 21:05:40 +0900
Subject: [mysql 05340] サブクエリ使えない場合

はじめまして、山本@大阪と申します。
SQL自体は最近始めたばかりです。
MySQL ではサブクエリが使えなくて、非常に難儀しているのですが、
以下の場合で、意図したデータの取得が出来なくて悩んでいます。


mysql> select * from ko;
+------+----------+
| num  | name     |
+------+----------+
|    1 | 関西太郎 |
|    2 | 東海一郎 |
|    3 | 関東花子 |
|    4 | 中部三郎 |
|    5 | 沖縄三平 |
+------+----------+
5 rows in set (0.03 sec)


mysql> select * from kb;
+------+--------+------------+-------+-------+-------+-------+
| num  | ko_num | val        | price | buy_y | buy_m | buy_d |
+------+--------+------------+-------+-------+-------+-------+
|    1 |      1 | ダイヤ     | 100   | 2002  | 03    | 24    |
|    2 |      1 | パール     | 400   | 2002  | 04    | 03    |
|    3 |      2 | 銀         | 320   | 2002  | 03    | 12    |
|    4 |      2 | 金         | 520   | 2002  | 03    | 31    |
|    5 |      3 | 金銀パール | 1000  | 2002  | 03    | 19    |
|    6 |      5 | 砂金       | 10    | 2002  | 03    | 24    |
+------+--------+------------+-------+-------+-------+-------+
6 rows in set (0.01 sec)

という2つのテーブルがあります。
kbテーブルの ko_num というのは、ko テーブルの num のことです。
ここで、「koテーブルにいる客の最近購入したもの」を取得したいのです。

CONCAT関数で、buy_y、buy_m、buy_d を結合し、MAX関数で最大値を
取得してから、group by でいけるかと思ったのですが、

select ko.num,ko.name,kb.ko_num,kb.val,kb.price,MAX(CONCAT(kb.buy_y,kb.buy_m,kb.buy_d)) from ko,kb where ko.num = kb.ko_num group by
kb.ko_num;
+------+----------+--------+------------+-------+-----------------------------------------+
| num  | name     | ko_num | val        | price | MAX(CONCAT(kb.buy_y,kb.buy_m,kb.buy_d)) |
+------+----------+--------+------------+-------+-----------------------------------------+
|    1 | 関西太郎 |      1 | ダイヤ     | 100   | 20020403                                |
|    2 | 東海一郎 |      2 | 銀         | 320   | 20020331                                |
|    3 | 関東花子 |      3 | 金銀パール | 1000  | 20020319                                |
|    5 | 沖縄三平 |      5 | 砂金       | 10    | 20020324                                |
+------+----------+--------+------------+-------+-----------------------------------------+

日付だけが MAX 値でいいのですが、 val、price は最新のものを
取ってこれません。

サブクエリが使えれば、すぐ取ってこれそうなのですが、
MySQL は未対応のようなので、ほかに何か方法があるでしょうか?


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
山本浩二
yamamoto@xxxxxxxxxx

[前][次][番号順一覧][スレッド一覧]

      5327 2002-04-07 20:07 ["kazuhito okada" <ma] はじめまして。                          
      5328 2002-04-07 20:04 ┗[Hidetoshi OKAWA <hid]                                       
      5329 2002-04-08 21:28  ┣["kazuhito okada" <ma] ありがとうございます。              
      5338 2002-04-12 05:22  ┗["kazuhito okada" <ma]                                     
      5339 2002-04-12 16:18   ┗["M.Hori" <hori.masat] MySQL の Windows2000 へのインストール (Was Re: はじめまして。)
->    5340 2002-04-12 21:05    ┗[Koji Yamamoto <yamam] サブクエリ使えない場合          
      5341 2002-04-12 22:08     ┗[とみたまさひろ <tomm]                               
      5342 2002-04-13 14:27      ┗[Koji Yamamoto <yamam]