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

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

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

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

Q&A

解決済

3回答

1185閲覧

データベースのヘッダーの合計値とヘッダーに紐づく合計値で違うものを出したい

yamaguti

総合スコア185

SQL

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

0グッド

0クリップ

投稿2017/08/31 08:22

編集2017/08/31 08:38

お世話になっております。

掲題の通り、ヘッダーテーブルにある金額と明細テーブルにある金額を比較する
クエリを作りたいです。

売上ヘッダーテーブル
ID
税抜

合計

売上明細テーブル
売上ヘッダーテーブル.ID
税抜

合計

こちらでヘッダーと明細で合計に際が出ているデータを見つけたいのですが

下記クエリですと、明細が1行入っているものでしか比較できません。

sql

1 2select * from 売上ヘッダー 3left join 売上明細 4on 売上ヘッダー.ID = 売上明細.売上ヘッダーテーブル.ID 5where 売上ヘッダー.合計 != 売上明細.合計

宜しくお願い致します。

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

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

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

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

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

sazi

2017/08/31 14:27

DBMSは何ですか?明細無しのヘッダーもありますか?
guest

回答3

0

ベストアンサー

ヘッダーと明細の合計に差異があるもののヘッダーと明細の合計値をだしました。

sql

1select h.`ID`, h.`税抜`, h.``, h.`合計`, d.`明細合計` from `売上ヘッダー` h 2join 3(select `ID`, sum(`合計`) `明細合計` from `売上明細` group by `ID`) d 4using (`ID`) where h.`合計` != d.`明細合計` ;

投稿2017/08/31 09:53

A.Ichi

総合スコア4070

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

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

0

シンプルにこんな感じはどうでしょう?

SQL

1SELECT h.ID, MAX(h.合計) AS ヘッダ合計, SUM(d.合計) AS 明細合計 2FROM 売上明細テーブル AS d 3INNER JOIN 売上ヘッダーテーブル AS h 4ON h.ID == d.売上ヘッダーテーブル.ID 5GROUP BY h.ID 6HAVING MAX(h.合計) != SUM(d.合計)

投稿2017/08/31 09:10

hihijiji

総合スコア4150

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

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

0

何がしたいのか理解できていないので的外れなことを言っているかもしれませんが、
売上ヘッダーと売上明細を比較する条件文はwhereを使うべきではありません。
売上明細にデータがない場合、出力されないからです。
代わりに、on ~ and ~という感じで繋げて書きます。

sql

1select * from 売上ヘッダー 2left join 売上明細 3on 売上ヘッダー.ID = 売上明細.売上ヘッダーテーブル.ID 4and 売上ヘッダー.合計 != 売上明細.合計

** 追記 **
少し動作が遅くなってしまうのですが、下記のSQLはどうでしょうか?

sql

1select * from 売上ヘッダー 2left join (select 売上ヘッダーテーブル.ID,税抜,,sum(合計) from 売上明細 group by 売上ヘッダーテーブル.ID) 売上ヘッダーテーブル 3on 売上ヘッダー.ID = 売上明細.売上ヘッダーテーブル.ID 4and 売上ヘッダー.合計 != 売上明細.合計

投稿2017/08/31 08:37

編集2017/08/31 08:52
KaiShoya

総合スコア551

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

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

yamaguti

2017/08/31 08:40

ご回答ありがとうございます。 ヘッダーは必ず1なんですが、明細はN個の為どのように比較すればよいか分かりませんでした。文言の不備申し訳ございません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問