[既存のテーブル]
2008年1月1日 Aさん
2008年1月2日 Bさん
2008年1月3日 Cさん
2008年1月4日 Aさん
2008年1月5日 Aさん
2008年1月6日 Cさん
2008年1月7日 Cさん
2008年1月8日 Bさん
2008年1月9日 Aさん
[求めるカタチ]
2008年1月1日 Aさん 1回目
2008年1月2日 Bさん 1回目
2008年1月3日 Cさん 1回目
2008年1月4日 Aさん 2回目
2008年1月5日 Aさん 3回目
2008年1月6日 Cさん 2回目
2008年1月7日 Cさん 3回目
2008年1月8日 Bさん 2回目
2008年1月9日 Aさん 4回目
ACCESSで「既存のテーブル」を「求めるカタチ」のようにしたいと考えています。
クエリを使う方法が思いつかなかったため、DAOを使って一行ずつ更新する方法を取ってはみたのですが、時間がかかってしまうため、何か効率的な方法を探しています。
アドバイスお願いいたします。
No.3ベストアンサー
- 回答日時:
抽出だけならNo.1の方のSQLで大丈夫です。
但し、既存のテーブルに「何回目」というフィールドがあり、それを
更新したいとなると、話が別です。更新クエリは1:1、又は1:nのn側だけ
更新することができます。既存テーブルが日付と人名をキーにしている場合、
結合相手もこの項目で一意になることが必要です。しかし、クエリが結合相手ですと、
クエリには一意キーが無いので、ターゲットに対して相手が複数になる可能性が
否定できません。つまり、ターゲットが1:nの1側になると言うことです。
人間には一意になると分かっていますが、物理的な一意キーがない以上、
機械的に更新不可能と判断さてしまいます。
これを回避するには同じレイアウトで、日付と人名を一意キーとする一時テーブルを
作成します。ここにNo.1の方のSQLを基にしてINSERTを行い、これと結合させれば、
一意キー同士の結合なので、1:1の関係が保証され、更新可能になります。
No.2
- 回答日時:
クエリデザイナでやるなら
そのテーブルを2個追加します
年月日、氏名、年月日 フィールドを追加して集計をONにします
2番目の年月日をカウントにします
新たに 年月日、氏名を追加して テーブルを2個目テーブル名にして集計をWhere条件にします
# _1などが追加されているテーブル名
追加した年月日の抽出条件に
<=[元テーブル名]![年月日]
追加した氏名の抽出条件に
=[元テーブル名]![氏名]
とします
出来上がったSQLです
SELECT myTable03.myDate, myTable03.myName, Count(myTable03.myDate) AS myDateのカウント
FROM myTable03, myTable03 AS myTable03_1
WHERE (((myTable03_1.myDate)<=[myTable03]![myDate]) AND ((myTable03_1.myName)=[myTable03]![myName]))
GROUP BY myTable03.myDate, myTable03.myName
ORDER BY myTable03.myDate;
# Dxak氏のSQLをAccess2003で実行しましたが希望の結果が得られませんでした
# 元テーブルと追加テーブルを結合してしまうとだめなようです
No.1
- 回答日時:
カテが違うんですけど・・・
テーブル名「例えば」
「年月日」、「氏名」で、フィールド名が初期として
SQL文で
SELECT 例えば.年月日, 例えば.氏名, Count(例えば.年月日) AS 回数
FROM 例えば INNER JOIN 例えば AS 例えば_1 ON 例えば.氏名 = 例えば_1.氏名
WHERE 例えば_1.年月日<=[例えば]![年月日]
GROUP BY 例えば.年月日, 例えば.氏名;
で、結果は出ますよ
「回目」と、言うのは表示形式で代用してください
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(エンターテインメント・スポーツ) 推しは、足りてますか? 2 2023/01/22 10:48
- 高校 この子は高校1年生になりますか? 平成20年 2008年 1月生まれ 14歳 子(ね) 2023年4 4 2022/12/20 09:35
- 兄弟・姉妹 ① 2007年4月生まれ15歳中3 2009年3月生まれ13歳中2 年齢は2歳差だけど学年は1歳差 2 2023/02/26 07:39
- ヨーロッパ みなさん、旅行好きですか? 3 2023/02/16 12:25
- 兄弟・姉妹 ① 2007年4月前半生まれの15歳中学3年 2009年3月後半生まれの13歳中学2年 年齢は2歳差 1 2023/03/16 07:56
- イベント・祭り イベントの話 1 2022/07/22 17:38
- アニメ 1990年生まれ以降の人で、 現在のアニメ または 自分世代のアニメ(主人公の設定年齢が自分と同い年 2 2023/02/17 16:35
- サッカー・フットサル 北海道コンサドーレ札幌の話 1 2022/10/30 06:44
- その他(エンターテインメント・スポーツ) あなたにとっての、2008年は? 1 2023/01/22 12:37
- 邦楽 シングルの話 1 2022/07/06 23:05
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
抽出条件でデータ型が一致しま...
-
accessのデータを拾って、ユー...
-
SQLの同時実行
-
オートナンバー型の数字を振り...
-
もしかして
-
エクセルで、日付を入力すると...
-
「ご処理進めて頂きますようお...
-
リストボックスの選択解除
-
VBAでループ内で使う変数名を可...
-
ImageMagickでgif画像の一部が...
-
accessで2つ以上のフォームを起...
-
VBAでセルに値が入力されるまで...
-
【Excel】特定の文字を含むセル...
-
自分の不注意で仕事で乗り合い...
-
複数シートのボタンに同一の動...
-
VBA リストボックスをダブルク...
-
Pythonでgif画像が上手く作れない
-
メルカリのメルカードで買い物...
-
「PC Helpsoft Driver Updated...
-
リョウ・・・量?料?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データがあれば○○なければのSQL
-
【access】複数のフィールドの...
-
ACCESS VBAでテーブル内の特定...
-
Access vbaで重複レコードの削...
-
ACCESS DCOUNTの抽出条件について
-
Accessで縦と横を入れ替えたい
-
VBAでテーブル名とカラム名を動...
-
DataGridViewで複数条件の抽出...
-
Access から Excelのシートをイ...
-
重複した複数のレコードを1レ...
-
DAOでSQLServerに接続し、LeftJ...
-
SQLServer→Access インポート
-
ACCESSで実行時エラー3008
-
sql文で削除クエリを書く
-
別のaccessファイルからデータ...
-
access追加クエリーでform入力...
-
抽出条件でデータ型が一致しま...
-
【PHP/MySQL】コード上で生成...
-
Accessリンクするテーブルが見...
-
ACCESSで購入回数を表示する方...
おすすめ情報