下のような3つのテーブルを結合したいのですが
SQL1つで可能でしょうか?
条件は
1.品種機械テーブルを読み込みます。
品種でユニークしますが使用日付を降順にならべ変えます。品種機械テーブルから使用日付がMAXのものの行データをすべて取得(下の場合:A 4 20051204・・)ほかはいりません。
2.品種テーブル読み込む。
1で取得した品種と一致する行データをすべて取得
3.機械テーブルを読み込む
2で取得した機械と一致する行データをすべて取得
うまい方法がおもいつかないのでアドバイスや
参考になりそうなホームページなどありましたら教えていただけないでしょうか?
宜しくお願いします。
---------------------------------------------
(1)品種テーブル(品種を管理)
品種 ・・・etc
A
B
C
D
---------------------------------------------
(2)機械テーブル(機械を管理)
マシン ・・・etc
1
2
3
4
------------------------------------------
(3)品種機械テーブル(品種と機械を管理)
品種 | マシン | 使用日付 |・・・etc
A | 1 | 20051201
A | 2 | 20051202
A | 3 | 20051203
A | 4 | 20051204
No.3ベストアンサー
- 回答日時:
#1の bonaronです。
仕様を誤解してました。
それも、途中のクエリをアップしてしまった(^^;
>3.機械テーブルを読み込む
>2で取得した機械と一致する行データをすべて取得
ということで、(1)品種テーブルには、マシンのフィールドがあるのでしょうか?
品種 マシン・・・
A 1
A 2
・ ・
A 9
B 21
・ ・
のように。
仕様の確認ですが
1.(3)のテーブルから[使用日付]の
最大値 "20051204"を取得。
2.(3)のテーブルから"20051204" の品種(A,B,D等)を取得。
3.品種テーブルから、2の A,B,D のデータを取得。
上の品種テーブルの例ではA-1~A-9、B-21~・・。
4.機械テーブルから、3の 1,2,・・・9,21・・・を取得。
最終的に必要なのは、このデータのみ。
上記仕様のクエリです。
SELECT *
FROM 機械テーブル INNER JOIN
[SELECT マシン FROM 品種テーブル
WHERE 品種 In
(SELECT DISTINCT 品種
FROM 品種機械テーブル
WHERE 使用日付=DMax("使用日付","品種機械テーブル"););]. AS Q品種
ON 機械テーブル.マシン = Q品種.マシン
ORDER BY 機械テーブル.マシン;
#2回答者さんへ
>#1回答者さんが使用している「TOP」は、SQL SERVERだけの機能だと思います。
Accessにも、もちろん「TOP」は存在します。
クエリのプロパティの「トップ値」です。
No.4
- 回答日時:
#3の補足です。
品種A、品種Bに同じマシンがある場合2つ抽出されます。
1つだけにするには、
[SELECT マシン FROM 品種テーブル
を
[SELECT DISTINCT マシン FROM 品種テーブル
にします。
No.2
- 回答日時:
>品種でユニークしますが使用日付を降順にならべ変え
ます。
>品種機械テーブルから使用日付がMAXのものの行データをすべて取得
「品種でユニークします」とは、どういう意味ですか?
(3)のデータでは、品種は重複していますが?
使用日付のMAX値のデータだけが必要なのに、「降順に並べ替える」という無駄な操作を行いたい理由は?
#1回答者さんが使用している「TOP」は、SQL SERVERだけの機能だと思います。
No.1
- 回答日時:
SELECT TOP 1 品種機械.*, 品種.*, 機械.*
FROM (品種機械 INNER JOIN 品種 ON 品種機械.品種 = 品種.品種) INNER JOIN 機械 ON 品種機械.マシン = 機械.マシン
ORDER BY 品種機械.使用日付 DESC;
品種,マシンは 2度表示されますが、
それは、偉業目の「*」を個々のフィールド名にすることで、
回避できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- その他(データベース) Microsoft Accessについて 1 2022/06/06 16:20
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- 統計学 確率について 会社ではある製品を生産しており、生産機会が3種類ある。製品はどれか一つの機会で作る。機 2 2022/05/30 18:33
- 中途・キャリア さて、社会人になってから13年目。 今まで、機械設計、機械製品の品質管理、部門の経営企画をやってきま 4 2023/07/17 08:59
- 会社・職場 現在、小さい工場で内定を頂いており、自動車、農作物の機械等のワイヤーハーネスの品質管理を学びます。 3 2023/01/21 12:56
- 食べ物・食材 梅干しの加工会社。 3 2022/09/05 09:16
- 法人税 ポータブル電源の法定耐用年数 2 2022/09/15 15:14
- 建設業・製造業 転職者の前職の実務経験による期待度について(機械加工) 2 2022/07/27 19:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
テーブル名が可変の場合のクエ...
-
データ無し時は空白行にしたい...
-
ACCESSのVBAにてExcelに行...
-
2つのテーブルをLIKE演算子のよ...
-
SQLで、Join句で結合したテ...
-
ExcelのMatch関数のようなもの...
-
同一テーブル内での比較(最新...
-
ADO+ODBCでテーブルに接続する...
-
結合したテーブルをSUMしたい
-
重複データの一方を削除するSQL...
-
三科目合計点のクラス別平均点...
-
テーブルデータの上書きをした...
-
行と列の入れ替え検索(行は可...
-
在庫管理のデータベース
-
ExcelのVLOOKUP関数の動作をMyS...
-
異なるテーブルの値を比較テー...
-
複数のテーブルからデータを取...
-
「都道府県の面積の大きい順に...
-
SQLローダーについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
テーブル名が可変の場合のクエ...
-
結合したテーブルをSUMしたい
-
既存データをINSERT文にして出...
-
SQLで、Join句で結合したテ...
-
データ無し時は空白行にしたい...
-
Accessの構成をコピーしたい
-
ACCESSのVBAにてExcelに行...
-
2つのテーブルをLIKE演算子のよ...
-
SQLサーバに対するSQL文で抽出...
-
ExcelのVLOOKUP関数の動作をMyS...
-
PRIMARY KEYのコピー
-
同一テーブル内での比較(最新...
-
ExcelのMatch関数のようなもの...
-
ADO+ODBCでテーブルに接続する...
-
Access 別のDBに対してDlookup...
-
改行を含んだデータのインポート
-
複数のテーブルからデータを取...
-
ACCESS クエリーでソートの不具合
-
副問合せを使わずにUNIONと同様...
おすすめ情報