No.3ベストアンサー
- 回答日時:
ANo.1です。
かなり複雑になってしまいますが、条件は最後のwhereの部分に記述してください。
評価1~評価5はその評価をとった回数がカウントされていますので、とったことがあるは0より大( >0 )、とったことがないは0( =0 )になります。
内容に関するご質問は、また補足などでいただければ回答します。
SELECT 名前
FROM (SELECT 名前,sum(価1) as 評価1,sum(価2) as 評価2,sum(価3) as 評価3,sum(価4) as 評価4,sum(価5) as 評価5
FROM (SELECT 名前,1 as 価1, 0 as 価2, 0 as 価3, 0 as 価4, 0 as 価5 FROM テーブル1 where 評価 = 1
UNION SELECT 名前,0 as 価1, 1 as 価2, 0 as 価3, 0 as 価4, 0 as 価5 FROM テーブル1 where 評価 = 2
UNION SELECT 名前,0 as 価1, 0 as 価2, 1 as 価3, 0 as 価4, 0 as 価5 FROM テーブル1 where 評価 = 3
UNION SELECT 名前,0 as 価1, 0 as 価2, 0 as 価3, 1 as 価4, 0 as 価5 FROM テーブル1 where 評価 = 4
UNION SELECT 名前,0 as 価1, 0 as 価2, 0 as 価3, 0 as 価4, 1 as 価5 FROM テーブル1 where 評価 = 5) as A
GROUP BY 名前) AS B
WHERE 評価5 > 0
and 評価4 = 0;
この回答への補足
なんどもすみません。
名前列と評価列以外にも複数列があるのですが名前と一緒にその列の項目も表示させたい場合最初のSELECTの後の名前のところを*にすればいいのでしょうか。
No.10
- 回答日時:
No.8の続きです。
といっても私はVBAは判らないのですが(苦笑)。
ダブルクオーテーションを2個づつにしてもだめですか?
WHERE (((DCount(""*"",""[テーブルA]"",""[名前]='"" & [名前] & ""' AND [評価]="" & 4))=0)) OR (((DCount(""*"",""[テーブルA]"",""[名前]='"" & [名前] & ""' AND [評価]="" & 5))=0));
てな具合に。
すみません、ちょっと判りません。
No.9
- 回答日時:
ANo.1,3,4,5です。
SQL文ひとつですむように修正してみました。
条件は文の後ろの方のMAX(A.E5)の部分です。
MAX(A.E1)、MAX(A.E2)、MAX(A.E3)、MAX(A.E4)、MAX(A.E5) は、0か1という値を返し、0は該当する評価を受けたことが「ない」、1は該当する評価を受けたことが「ある」ということをしめします。
後ろの数字が評価の数値を示しています。
下の文では、評価5を取得したことはないが、評価4を取得したことがあることを示します。
SELECT
DISTINCT
TABLEA.名前
, TABLEA.住所
FROM
TABLEA INNER JOIN (
SELECT
A.名前
FROM
(
SELECT
名前
, 1 AS E1
, 0 AS E2
, 0 AS E3
, 0 AS E4
, 0 AS E5
FROM
TABLEA
WHERE
評価 = 1
UNION
SELECT
名前
, 0
, 1
, 0
, 0
, 0
FROM
TABLEA
WHERE
評価 = 2
UNION
SELECT
名前
, 0
, 0
, 1
, 0
, 0
FROM
TABLEA
WHERE
評価 = 3
UNION
SELECT
名前
, 0
, 0
, 0
, 1
, 0
FROM
TABLEA
WHERE
評価 = 4
UNION
SELECT
名前
, 0
, 0
, 0
, 0
, 1
FROM
TABLEA
WHERE
評価 = 5 ) AS A
GROUP BY
A.名前
HAVING
MAX ( A.E5 ) = 0
AND MAX ( A.E4 ) = 1 ) AS B
ON TABLEA.名前 = B.名前 ;
これなら、そのままVBAでも使えると思うのですが、いかがでしょうか。
でも、ANo.8のkitasueさんの回答の方がスリムでいいですね。(^^;
No.8
- 回答日時:
パフォーマンスがかなり落ちますので実用になるか判りませんが、次のクエリならば一発です。
SELECT テーブルA.*
FROM テーブルA
WHERE (((DCount("*","[テーブルA]","[名前]='" & [名前] & "' AND [評価]=" & 4))=0)) OR (((DCount("*","[テーブルA]","[名前]='" & [名前] & "' AND [評価]=" & 5))=0));
この回答への補足
VBAでSELECT分を文字変数に入れてから発行しているのですが"[テーブルA]"のダブルコーテーションで文法エラーになるのですが。
補足日時:2006/02/21 08:47No.7
- 回答日時:
No.6の続きです。
すみません、私はVBAのことは、ほとんど解りません。
ただ、素人考えですが、クロス集計の部分はVBAで書かなくてもよいのではないでしょうか。
そのままクエリとして保存しておき、VBAで書くのなら2つめの集計クエリの箇所を書けばよいのでは?
クロス集計はたしかに結果がでました。
ただVBAでQ_名前_評価を指定するとエラーになるので
クエリの指定のしかたがあるのかもしれません。
調べてみます。
No.6
- 回答日時:
横レス失礼します。
Access2000をお使いでしたらクロス集計クエリを利用されてはいかがでしょうか。
galoonさんのアイデアをお借りして、次のようなクロス集計クエリを考えました。クエリのSQLビューでペーストしたら、デザインビューに戻して構いません。
TRANSFORM Count(テーブルA.評価) AS 評価のカウント
SELECT テーブルA.名前
FROM テーブルA
GROUP BY テーブルA.名前
PIVOT テーブルA.評価;
これを「Q_名前_評価」という名前で保存します。
次に、以下の内容を、また新たなクエリとして登録します。これもSQLビューでペーストしたら、デザインビューに戻して構いません。
SELECT テーブルA.*
FROM テーブルA INNER JOIN Q_名前_評価 ON テーブルA.名前 = Q_名前_評価.名前
WHERE (((Q_名前_評価.[4]) Is Null)) OR (((Q_名前_評価.[5]) Is Null));
このクエリを開くと、ご所望のリストになりませんか?
この回答への補足
ご回答ありがとうございます。
説明不足だったのですが開発をすべてVBAで行っているのですが
TRANSFORM Count(テーブルA.評価) AS 評価のカウント
SELECT テーブルA.名前
FROM テーブルA
GROUP BY テーブルA.名前
PIVOT テーブルA.評価;
の部分はどう書いたらいいのでしょうか。
No.5
- 回答日時:
ANo.1,3,4です。
ざっと内容を見てみました。
これは、SQL文を入力したと考えていいのでしょうか?
そうであれば、次の点を確認してみてください。
・後半部分にSTATUS=3 という部分がありますね。これは、ST=3のミスでは?
・「ON TABLE.NAME = SELECT」の部分を「ON TABLE.NAME = (SELECT」とし、最後の「価2 = 0.NAME」を「価2 = 0).NAME」としてみてください。
もしかして、クエリとかを組み合わせない方がよかったんでしょうか・・・。
ちょっと複雑なクエリ文になってしまってわかりにくかったですね、申し訳ないです。
No.4
- 回答日時:
ANo.1,3です。
ちょっとクエリの数が増えますが次の方法が簡単だとおもいます。
(1)先のSQLをクエリとして保存する。(「クエリ1」とする。)
(2)新しいクエリを次の内容で作成する。(「クエリ2」とする。)
SELECT テーブルA.名前, {表示したい列名を列挙} FROM テーブルA INNER JOIN クエリ1 ON テーブルA.名前 = クエリ1.名前
(3)クエリ2を開く。
いかがでしょうか。
この回答への補足
FORM句のエラーになります。
デバッグすると
?cmd.CommandText
SELECT TABLE.NAME,TABLE.ADRESS FROM TABLE INNER JOIN SELECT NAME
FROM (SELECT NAME,sum(価1) as 評価1,sum(価2) as 評価2,sum(価3) as 評価3,sum(価4)
as 評価4 FROM (SELECT NAME,1 as 価1, 0 as 価2, 0 as 価3, 0 as 価4 FROM TABLE
where ST = 1 UNION SELECT NAME,0 as 価1, 1 as 価2, 0 as 価3, 0 as 価4 FROM
TABLE where ST = 2 UNION SELECT NAME,0 as 価1, 0 as 価2, 1 as 価3, 0 as
価4 FROM TABLE where ST = 3 UNION SELECT NAME,0 as 価1, 0 as 価2, 0 as
価3, 1 as 価4 FROM TABLE where ST = 4) as A GROUP BY NAME) AS B WHERE
評価2 = 0 ON TABLE.NAME = SELECT NAME FROM (SELECT NAME,sum(価1)
as 評価1,sum(価2) as 評価2,sum(価3) as 評価3,sum(価4) as 評価4 FROM (SELECT NAME,1
as 価1, 0 as 価2, 0 as 価3, 0 as 価4 FROM TABLE where ST = 1 UNION SELECT NAME,0
as 価1, 1 as 価2, 0 as 価3, 0 as 価4 FROM TABLE where ST = 2 UNION SELECT NAME,0
as 価1, 0 as 価2, 1 as 価3, 0 as 価4 FROM TABLE where STATU
S = 3 UNION SELECT NAME,0 as 価1, 0 as 価2, 0 as 価3, 1 as 価4 FROM TABLE where ST = 4)
as A GROUP BY NAME) AS B WHERE 評価2 = 0.NAME
私の理解の範囲を超えているのでなにがおかしいのかわかりません。
やはりFORM句のエラーになります。
あまりお時間とらせるのは悪いので
とりあえずテーブル2を追加しテーブル2にクエリー1の結果を保存しテーブル1とテーブル2でマッチングさせました。
ありがとうございました。
何か良い参考書、URL等ありましたらお教えください.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Visual Basic(VBA) VBAで重複データを確認したい 5 2022/10/07 16:24
- Excel(エクセル) VBAで重複データを合算したい(時間) 1 2022/12/08 23:06
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2つのテーブルを比較して一致し...
-
Accessでテーブル名やクエリ名...
-
accessのマクロでODBC接続で外...
-
Accessの追加クエリで既存のテ...
-
access テーブル内のレコード...
-
ACCESSに同時アクセス(編集)を...
-
2つのテーブルAとBをマージ...
-
Accessのフォームの並び替えを...
-
MS-ACCESSで、レコードセットを...
-
Accessでもっと早く探したい
-
Excel 2019 のピボットテーブル...
-
BIOSでAHCIに設定したいが、項...
-
項目名の制限について
-
アクセス メモ型 255文字...
-
ACCESSで和暦を西暦に・・・
-
access2000:フォームで入力し...
-
「直需」の意味を教えてください
-
【至急】Accessのフィールドの...
-
変数が選択リストにありません
-
sqlplusで日本語入力
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでテーブル名やクエリ名...
-
Accessレコードの追加や変更が...
-
Accessクエリでの、LIKE条件
-
3つの表を1つに縦に連結する
-
Accessでvlookupみたいなことは...
-
ACCESSに同時アクセス(編集)を...
-
Accessの追加クエリで既存のテ...
-
SQLで条件指定結合をしたいがNU...
-
2つのテーブルを比較して一致し...
-
デザインビューで、連結式 を...
-
Accessでテーブルからテーブル...
-
ツリー構造をRDBで表現するには?
-
ACCESSで指定されたテーブルか...
-
テーブル作成クエリで主キーを設定
-
リンクテーブルを CopyObject ...
-
access テーブル内のレコード...
-
Accessでテーブルにパスワード...
-
SQLで日付を条件に削除したい
-
ACCESS クエリ(カウント0の...
-
時間の足し算
おすすめ情報