Office:クエリの改善
こんにちは、
私は私が必要なものを正確に与えるこのクエリを持っていますが、それはかなり遅いです.それを改善する方法とそれが遅い理由についての説明についていくつかの提案をしたいのですが.これがクエリです:
Distinct Encounters.EncounterPocを選択します(エイリアスとしてのEnsountersからcount(*)を選択する
ensounters.ennouterpoc= alias.encounterpocとbooked= true)
遭遇から;
それが私に与えるものは、職員のリストとそれぞれがタスクを完全に順にしたものです.例えば:
人1 2
人2 7
PERSON3 27
etc ....
返信リスト(回答:5)
応答1# ->にスキップ2 #fignewt右方向にポインタをありがとう.そのクエリははるかに速いです.なぜか教えてくれますか?副照会は本当にアクセス/ジェットDBSが遅いですか?
これは私が今持っているものです:
EncounterPocを選択し、合計としてカウント(*)を選択します. 出会いから
によるグループ
現在= TRUE
EncounterPocしかし、私はそれを選択するだけです.だから私の結果はタスクを完了していない私のスタッフのいずれも省略します.次のようなリストが欲しいのですが:
人1 4
人2 0
人37
etc...
ここで/持つ聖書の数分類は、私が欲しいものを私に与えるためにそれを得ることができないようです.
応答2# ->にスキップ3 #JohnW.VEncounterPocとは何ですか?あなたは持っていますか(私はあなたがすることを願っています!)この遭遇の表に関連する職員のtable? Person 2のための[出会い]にレコードがない場合2人が会計を見たいとどのようにアクセスできるかどうか?
使用する表構造には、EmployeIDを主キー(従業員の名前などの伝記データ)とともに2つのtableがあり、Encuntiridを主キーとして、外国人としてのEncunteridを使用してキー.クエリの可能性があります
になります
それからemployees.lastname、employees.firstname、count(*)
従業員から
左結合Encounters
employes.employeeID= Encounters.EmployeEID;
左の結合は、遭遇しなかった貧しい退屈な退屈な敗者でさえ、すべての従業員を返します.:-{)
応答3# ->にスキップ4 #fignewtヨハネ、
私はあなたの提案された表構造を正規化の目的のためのものをするための適切な方法であることを認識していますが、私はDBAではなく、結合に恐れていて、SQLで最高のMedioCreです.特にアクセスSQL...ALAS My Table構造ははるかに洗練されていません.1table
フォームにそのレコードを入力した人のイニシャルを含むEncounterPocフィールドを使用する.Applicationは、それらがロードのイニシャルを置く必要があります.そのため、tableはそのように見えます.EncounterPocテキスト
予約YES/NO
etc...(他の無関係のフィールドの束)
「遭遇者のためのレコードがない場合2人にアクセスしたいということをどのようにアクセスできるか? "
人2のレコードがありますが、それがyes/no field=はい記録はありません.私はまだそれらの従業員を捉え、それらのために0の結果を得ることを望みます.だから私の最初のクエリの試みでは、リストを入力するために異なるEncounterpocを選択してください.
レコードを入力したすべての人のうち.このApplicationを使用している人はかなり高い回転船があります.彼らが私のチームにとって新しいものであるとき、これに対して0人の従業員を持つことは珍しくありません.彼らがするかもしれないが、彼ら自身の欠点を通して!
応答4# ->にスキップ5 #JohnW.V冗談が横ばいになってすみません.私はあなたの従業員を尊重します、そして彼らを摩擦することは私の間違いでした!
あなたのtableのデザインはあなたの質問に答えるのをはるかに難しくしているものです.私はあなたにそれをするためのSQLクエリを書くことができます、しかしそれは私にとってSQL、結合、そして少し頭蓋骨の汗を必要とします、そして私はAccessSQLを知っていて好きです!これをコピーしてSQLwindows に貼り付けてみてください
新しい空白のクエリの場合:SELECT A.EncounterPOC、Count(B.*)AS CountOfEncounters
FROM Encounters AS A
LEFT JOIN Encounters AS B
ON A.EncounterPOC=B.EncounterPOC
GROUP BY A.EncounterPOC
B.Booked =はいまたはB.BookedがNULLの場合POCごとに1つのレコードを持つ新しいtableを作成するのは非常に簡単です.RJNを使用する2人の従業員がいる場合に備えて、フィールドPOCID(自動番号、主キー)、EncounterPOC(現在のイニシャル)、およびおそらく名と姓のフィールドを使用します.
イニシャル、および同じ名前の2人の従業員がいる場合に備えて、生年月日や雇用日などの他の情報もあります(Fred A.Brownという名前の3人の男を知っています).空のtableを作成し、APPENDクエリを実行してデータを入力するだけです:INSERT INTO newtable(EncounterPOC)
SELECT DISTINCT EncounterPOC FROM Encounters;
このtableを使用すると、少し調整を加えて、上記のより単純な結合を使用できます.
関連質問
- MDBテーブルをACCDBにリンクします
- フィールド名をあるテーブルから別のテーブルにコピーします
- 行3でのExcelファイルをインポートします
- 複数の人がMicrosoft Accessテーブルにデータを同時に入力できますか?
- Microsoft Accessデータベースレポート
- OBDCとのMSアクセスがあるLANに接続されているSQL Azure VMに接続する方法(ネイティブクライアント13)
- リンクテーブルマネージャについて
- 他のテーブルからの基準を含むテーブルからのクエリを削除します.エラーメッセージ:削除したいレコードを含む表を指定します
- アクセスVBAへCreateObject関数
- フォームのリストボックスにPDFファイル名を表示する