2016-05-01 4 views
0

回答を探している多くの記事を検索しましたが、解決策を説明することができません。MS Access;リンクされた値が複数の列で発生する回数をカウントする

私は食事のオプション(tbl_Meal_Options)を一覧表示するテーブルを備えた結婚式データベースを持っています。たとえば、肉、魚、鶏肉、ベジタリアンの4つの値を持つ1つの列があります。

2番目の表には、送信されたすべての招待状が含まれています。招待状には最大4人までのゲストが参加できるため、招待状には「Meal_1」「Meal_2」「Meal_3」「Meal_4」の4つの列があります。これら4つの列のセルは、Meal_Optionsテーブルにリンクされています。 Meal_Optionsテーブルにリンクされたドロップダウンメニューから、Meal_1/2/3/4で適切なオプションが選択されます。

私は、以下の4つの項目を表示するクエリを実行したいと考えています。 Meal_Optionsテーブルを開き、各アイテムがMeal_1〜4の列の中から選択された回数を計算します。

最終的に、私は次のようなものを探しています: チキン57 魚24 肉39 ベジタリアン14

食事の総数が出席したゲストの合計数を等しくする必要があります。

何か助けが非常に高く評価されています。

+0

テーブルとデータを散文で説明するのではなく、http://www.sensefulsolutionsを使用して質問を編集し、サンプルデータを追加できると便利です。com/2010/10/format-text-as-table.html AccessデータシートまたはExcelからいくつかのデータをコピーし、 "MySQL"としてフォーマットし、出力をあなたの質問にコピーし、コードとしてフォーマットしてください。 – Andre

答えて

0

SQLクエリは、最も簡単な正規化されたデータベースの設計で行われ(あなたがその名前を言及したことがないので、私は2番目のテーブルこの答えでtbl_Invitationsを呼び出します)(がためWhat are 1NF, 2NF and 3NF in database design?を見ます意味するものは実際には問題には合わないが、クイック検索後に何も見つからない)。

tbl_Invitationsの4桁に渡って同じ種類の情報(食事オプション)を使用することは避けてください。代わりに、2つの列(Invitation_IDおよびMeal_Option、それぞれの主キーtbl_Invitationsおよびtbl_Meal_Options)の2つの列を持つ第3のテーブルを作成して、serverdする必要がある実際の食事のリストを作成します。最初の列は、食事がどのような招待状に属するのかを示し、2番目の列は、食事の選択肢を示しています。

Meal_Optionをグループ化して、そのテーブルのSELECT Meal_Option, COUNT(*)をそのまま使用できます。

これは、クリーンな方法だろうが、あなたはまた、あなたの現在のテーブルのレイアウトを使用して同じ情報を取得できます。

SELECT m.Meal, COUNT(*) AS Orders 
FROM tbl_Meal_Options AS m 
LEFT JOIN (
    SELECT Meal_1 AS Meal FROM tbl_Invitations 
    UNION ALL 
    SELECT Meal_2 AS Meal FROM tbl_Invitations 
    UNION ALL 
    SELECT Meal_3 AS Meal FROM tbl_Invitations 
    UNION ALL 
    SELECT Meal_4 AS Meal FROM tbl_Invitations 
) AS i 
ON m.Meal_Option = i.Meal 
GROUP BY m.Meal 

Meal_Optionと仮定してtbl_Meal_OptionsMealテキスト記述の主柱です)

あなたは、これはリッテもう少し精巧であり、あなたが招待あたりの食事の数を変更したい場合はひどくスケール見ることができるように(これは、あなたはおそらくしませんが、とにかく...)

+0

完璧な答え!ありがとうございました!!私は4つの食事コラムがこれを処理する最善の方法ではなかったと感じましたが、テーブルだけを使って4つのオプションを入力する方法が必要でした。私が持っている唯一の問題は、サマリテーブルが実際の値の代わりにID番号を表示するようになったことです。肉、魚、鶏などの代わりに、私は1,2,3,4を取得します。私はそれが私のリンクリストのドロップダウンと関係があると確信していますが、私はそれを修正する方法がわかりません。これまで最悪の問題ではありません。あなたは私の主な問題を解決しました! – Argonax

+0

@Argonax:食事名を組み込むようにクエリを更新しました。 – Leviathan

+0

ありがとうございました!私はあなたのポストに2つの "小切手"を差し上げます。 – Argonax

関連する問題