システムwiki

データの1つの行セットを別の行に統合する方法は?

DarrenG 受付中 最終更新日:2022-06-26 01:45

最初に、私はこれに非常に慣れていないので、まだ非常に初心者です.

ご覧のとおり、ここには20個のレコードがありますが、IDは15個しかありません.このクエリの私のビジョンは、[飛行日]セクションのデータセットを、img2で想定されている次の[ジェットタイプのデータセット]に組み込むことです.

ここに表示されているように、[合計セクションは日付でソートされているためにすべて1であるため、それは私の意図ではありませんでした.

誰かが解決策を知っているなら、初心者の言葉で私にそれを説明してください、ありがとう.

返信リスト(回答:4)

1 #
GroverP

ケンのコメントを読んで、もう一度読んでください.問題の核心は不適切なtableの設計であり、あなたが求める解決策は、賢明なことに、tableを正しく再設計することから生まれます.クエリやコードの解決策を探すのではなく、tableのデザインを修正すれば、残りは続きます.

ケンの説明は確かですが、いくつかの例とスクリーンショットを使ったより広範な議論もそれを理解するのに役立ちます. そのために、このリンクにある記事(複数あります)を読むことをお勧めします.

応答1# ->にスキップ
2 #
DarrenG

なるほど、今から作業します.すべての入力に感謝します

3 #
ScottBD

ただし、役立つ情報がさらに必要です.これはクエリであるとおっしゃっていますが、その場合は、そのクエリのSQLステートメントを確認する必要があります.役立つようにするには、tableの構造を理解する必要があります.M01、L01、S01は別のtableから来ていると思います.
考えられる解決策の1つは、クロス集計クエリを使用することです.tableの構造を知らなければ、それがうまくいくかどうかはわかりません.

4 #
KenSher

ここでの問題は、データを列見出し、つまり3つのジェットタイプの列としてエンコードするため、tableの設計が正しくないことです.データベースリレーショナルモデルの基本原則は、情報原則(コッドのルール#1)です.これには、すべてのデータがtableの行の列位置に値として格納される必要があり、他の方法では格納されません.

正しいデザインは次のようなtableになります:

予約が修正されました

….bookingID(自動番号PK)

….MID

….dateOfFlight

….jetType(FK)

JetTypeは、JetTypestableの主キーを参照する外部キーである必要があり、参照整合性とカスケード更新は、2つのtable間の関係で適用される必要があることに注意してください.次の「追加」クエリを実行することにより、現在の「予約」tableからこのtableにデータを入力できます.

BookingsCorrected(MID、DateOfFlight、JetType)に挿入

SELECT [Mid#]、[Date of Flight]、 "LO1"

予約から

LO1がNULLではない場合.

BookingsCorrected(MID、DateOfFlight、JetType)に挿入

SELECT [Mid#]、[Date of Flight]、 "MO1"

予約から

MO1がNULLではない場合.

BookingsCorrected(MID、DateOfFlight、JetType)に挿入

SELECT [Mid#]、[Date of Flight]、 "SO1"

予約から

SO1がNULLではない場合.

適切に構造化されたtableにデータを配置すると、クロス集計クエリを使用してスケッチした形式の結果tableを簡単に返すことができます.

新しいtable定義からスペースや#文字などの特殊文字を省略していることに注意してください.これらは表記上の問題を引き起こす可能性があるため、回避する必要があります.代わりに、キャメルケースを使用するか、_thisのようなアンダースコア文字でスペースを表します.

また、サンプルデータを投稿するときは、画像としてではなく、タブで区切られたテキストとして投稿することをお勧めします.そうすれば、アドバイスするソリューションをテストするために、データをtableに簡単にインポートできます.あなたの場合、解決策は明らかですが、常にそうであるとは限りません.