Access2000のSQL文の質問です。(長文)
[OYA]テーブルに、OYA_CODE(KEY),OYA_NAMEのフィールドがあります。
データは、1 , A
2 , B です。
[KO]テーブルに、KO_CODE(KEY),KO_NAMEのフィールドがあります。
データは、11 , A-1
12 , A-2
13 , A-3
21 , B-1
22 , B-2 です。
[TENKAI]テーブルに、OYA_CODE(KEY),KO_CODE(KEY),CNTのフィールドがあります。
データは、1 , 11 , 1
1 , 12 , 2
2 , 21 , 3
2 , 22 , 4 です。
[DATA]テーブルに、OYA_CODE(KEY),KO_CODE(KEY),CNTのフィールドがあります。
データは、1 , 11 , 10
1 , 12 , 20
2 , 21 , 100
2 , 22 , 200 です。
結果を
OYA_CODE, OYA_NAME, KO_CODE, KO_NAME, KEI
1, A, 10
1, A, 11, A-1, 10
1, A, 12, A-2, 40
2, B, 100
2, B, 21, B-1, 300
2, B, 22, B-2, 800
と、したいのです。
つまり、[TENKAI]のCNT×[DATA]のCNT が、ほしいのです。
ネックは、OYA_CODEのみのレコードが出ないのです。
このテーブルにこう言うフィールドをつける等、
具体的にご支持を頂ければ幸いです。
宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
サブクエリを使うのかな・・・
Access2003では下記SQLで可能です。
SELECT E.OYA_CODE,F.OYA_NAME,E.KO_CODE,G.KO_NAME,E.KEI
FROM ((SELECT C.OYA_CODE,C.KO_CODE,C.CNT*D.CNT AS KEI
FROM DATA AS C INNER JOIN TENKAI AS D ON
C.OYA_CODE=D.OYA_CODE AND C.KO_CODE=D.KO_CODE
UNION
SELECT A.OYA_CODE,NULL AS KO_CODE,A.CNT AS KEI
FROM DATA AS A INNER JOIN
(SELECT X.OYA_CODE,MIN(X.KO_CODE) AS KO_CODE FROM DATA AS X
GROUP BY X.OYA_CODE) AS B
ON A.OYA_CODE=B.OYA_CODE AND A.KO_CODE=B.KO_CODE) AS E
LEFT JOIN OYA AS F ON E.OYA_CODE=F.OYA_CODE)
LEFT JOIN KO AS G ON E.KO_CODE=G.KO_CODE
何やってるか分からないですね。
(1)DATAテーブルからOYA_CODEと、OYA_CODEでグループ化した時の
最小値のサブクエリを作ります。
(2)DATAテーブルと(1)のサブクエリをINNER JOINし、CNTと共に
KO_CODEをNULLとした(KO_CODEとKO_NAMEを空欄にするため)
クエリ(「OYA_CODEのみのレコード」)を作っています。
(3)DATAテーブルとTENKAIテーブルをOYA_KEYとKO_KEYでINNER JOINし、
DATA.CNT * TENKAI.CNT をKEIとするクエリを作っています。
(4)上記(2)と(3)を合成(UNION)したものと、OYA、KOをそれぞれ
LEFT JOIN してOYA_NAMEとKO_NAMEを持ってきています。
分かりにくい場合は各"SELECT"の所を別クエリにして結合しても同じ
結果が得られます。「OYA_CODEのみのレコード」は「1,A,10」には
ならず、「1,A,,,10」になります。まあ、これは当然ですね。
早速のご回答をありとがとうございます。
テスト環境では、ACCESS97の為だと思いますが、
「FORM句の構文エラー」と、なってしまいます。
明日、改めて結果をご報告できるかと思います。
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Visual Basic(VBA) CODE関数のvbaバージョンか方法はありますか? 5 2022/09/01 17:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Access】フォームで自動計算...
-
Accessのフィールド数が255しか...
-
INSERT INTO ステートメントに...
-
ACCESSで400以上のフィールドが...
-
view作成時にデータ型を変更し...
-
accessで重複を防ぎたい
-
IT用語について質問です。 以前...
-
Accessでテーブルの値をテキス...
-
ACCESSでテーブルのフィールド...
-
アクセスのテーブルデータをCSV...
-
SQLServer2005のSQL文での別名...
-
ACCESS検索★ある文字を複数のフ...
-
FileMakerで登録ボタンを作りたい
-
通貨型で\\0の時、何も表示しな...
-
accessのレポートで元になるテ...
-
電話番号のデータの書式を変換...
-
Access 昇順・降順で並び替え...
-
ACCESS VBAにてCSV...
-
ACCESS2000「定義されているフ...
-
Sqlserver2005でテーブルを作成...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでテーブルの値をテキス...
-
Accessのフィールド数が255しか...
-
ACCESSで400以上のフィールドが...
-
ACCESSでの改行コード
-
INSERT INTO ステートメントに...
-
accessのレポートで元になるテ...
-
アクセス エラーを数値「0」に...
-
ExcelのデータをコピーでACCESS...
-
Accessで、固定アルファベット+...
-
Access 昇順・降順で並び替え...
-
accessで重複を防ぎたい
-
アクセス VBAで列の入れ替...
-
SQLServer2005のSQL文での別名...
-
ACCESSで和暦を西暦に・・・
-
ACCESS2000「定義されているフ...
-
主キーはオートナンバー型のID...
-
ACCESSでオートナンバーを任意...
-
ACCESSでテーブルのフィールド...
-
アクセス A列コピー B列貼り...
-
IT用語について質問です。 以前...
おすすめ情報