問題タブ [inner-join]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - LINQ:linqでピボットテーブルを使用する
誰か助けてもらえますか?
アソシエーションを使用した次の構造があります。ご覧のとおり、v.StructureType.Descriptionは1対1のアソシエーションとして機能しますが、以下の例でv.StructureGroup.StructureGroupTariffs.Tariff.Priceを取得する必要がありますが、StructureGroupTariffsはピボットテーブルを使用してStructureGroupとTariffsを相互リンクします。したがって、多対多であるため、EntitySetが返されます。問題は理解できましたが、修正方法がわかりません。
したがって、私のstructureGroupTariffsが私のピボット(相互リンクテーブル)であることを理解して、渡す必要があります
これにより、1対1になります...したがって、StructureGroupTariffs.Tariff.Priceを使用できると思います??? これにより、StructureGroupとTariffの間で1対1が返されます。
私は少し混乱しているので、助けていただければ幸いです。
私は今問題を理解していますが、どうすれば修正できるかわかりません。
sql - postgreSQL内部結合
私はSQLクエリを持っています
エラー列を返しますRoles.roleは存在しません
クエリ
テーブル「ロール」のFROM句エントリがない場合にエラーを返します
どうすればこの問題を解決できますか?私は離れてmssqlで動作します
sql - SQL Server 2005 で where の前に結合を強制的に実行するにはどうすればよいですか?
価格表をユーザー提供の回答を含む表に結合する SQL クエリがあります。私のクエリは、入力された数量に基づいて価格を取得するために使用されます。以下は私のSQL文です:
問題は、SQL Server が JOIN の前に where 句を実行していて、エラーがスローされていることです。
varchar 値 'TEST' をデータ型 int に変換するときに変換に失敗しました。
結合の前に最小値と最大値の比較を行っているためです ('TEST' は、JobQuestion テーブルにユーザーが入力した有効な値ですが、JobQuestion が Price に結合されている場合は返されません)。SQL Server が WHERE を実行することを選択しているのは、パーサーが何らかの理由でそれがより効率的なクエリであると考えているためだと思います。もし私がただ走るなら
これらの結果が返されます:
したがって、WHERE を追加すると、最後の 2 つのレコードが除外され、最初のレコードだけが返されます。SQL に最初に JOIN を実行させるか、別の手法を使用して必要なレコードだけを除外するにはどうすればよいですか?
linq - linq結合を支援する
linq(結合)に次の式があり、後でJを使用する必要があるため、「J」を選択しています(現在、Jを選択するだけですが、これを修正したら、後で別のサブクエリ内でJを使用する予定です)
ただし、「V」側を使用する場所を指定できないため、v.IdOFficeは無効です。結合を入れ替えてみましたが、「GVT」を使用できません。
完璧に機能する場所を指定しますが、2つのテーブルに存在する2つの場所を指定する必要があります...したがって、IdOfficeとIdTariffはそれぞれのテーブルにあります..両方ではありません...。
おそらく何かばかげている、それは私がどこで使用することができない結合の後に指定されたテーブルに表示されますか?
何か案は?
ありがとう
これは基本的に私が達成しようとしていることです
基本的に、Idとフィールド内に同じ数の料金が含まれる1つのレコードになります-これが理にかなっている場合はどうなりますか?
}
クエリはうまく機能し、
このように拡張メソッド(c#)を使用できると便利です...これは可能であるため、動的に料金を設定できます...たとえば、クエリを実行し、拡張メソッドを使用します(すでに使用しています)単純なクエリの場合)
これはそれを非常に拡張可能にしますか?私がこれを行うことができるが、クエリがどこにないのが普通の場合
ありがとうございました。
c# - リンク; 新しい {} に Iqueryable を返すように強制しますか?
私は小さなクエリを書きましたが、Linqpad ではうまく機能していますが (下記参照) Tariffs が Iqueryable として返されません。これを修正する方法を知っている人はいますか?
基本的にTariffs = new ....を参照してください。
私はこれを試しましたが、gvt はテーブルなどではないため無効ですか?
もちろん、gvtには内部結合があるため、必要な値だけが含まれています...
MyTariffs から直接プルすることもできますが (Iqueryable を返します)、gvt で行った結合を考慮していないため、情報が多すぎますか?
sql - いつ内部結合を使用し、いつサブクエリを使用しますか?
内部結合とサブクエリの違いは何ですか? いつサブクエリを使用する必要がありますか? または内部結合?私は最近、内部結合が遅すぎてサブクエリが解決策であるという状況にありました。私の限られた理解から、2つはまったく同じように機能すると思いました。
mysql - オプションの関係列を含むリストに参加してください
テーブル:
auseridと asetidを指定すると、セット内のすべてのアイテムのリストと、関係が存在する場合は各アイテムに対するユーザーの関係を生成する必要があります。つまり、結果は
次の句は、2 番目の句が nullのwhere行を除外するため、機能しません。relationship
ただし、2 番目のwhere句は、その項目と特定のユーザーの間に既存の関係がない行を除外します。単一のクエリでこれを行うにはどうすればよいですか?
sql - SQL: 2 つの巨大なテーブルの内部結合
それぞれ約 1 億レコードの 2 つの大規模なテーブルがあり、2 つの間で内部結合を実行する必要がありました。さて、どちらのテーブルも非常に単純です。説明は次のとおりです。
BioEntity テーブル:
- BioEntityId (int)
- 名前 (nvarchar 4000、これはやり過ぎです)
- TypeId (整数)
EGM テーブル (実際には、一括インポート操作の結果である補助テーブル):
- EMGId (整数)
- ID (整数)
- 名前 (nvarchar 4000、これはやり過ぎです)
- TypeId (整数)
- LastModified (日付)
BioEntityId を EGM テーブルにある PId に関連付けるために、一致する名前を取得する必要があります。もともと、私は単一の内部結合ですべてを実行しようとしましたが、クエリに時間がかかりすぎているように見え、データベースのログファイル (単純な回復モード) が使用可能なすべてのディスク領域 (200 GB をわずかに超える) をなんとか使い果たしました。データベースが 18 GB を占有する場合)、クエリは 2 日間待機した後に失敗します。ログが大きくならないように管理できましたが (現在は 33 MB しかありません)、クエリは現在 6 日間ノンストップで実行されており、すぐに停止するようには見えません。
かなりまともなコンピューター (4GB RAM、Core 2 Duo (E8400) 3GHz、Windows Server 2008、SQL Server 2008) で実行していますが、コンピューターが 30 秒ごとに (ギブ オア テイク) 時々ジャムすることに気付きました。数秒。これにより、他の用途に使用することが非常に難しくなり、本当に神経質になっています.
さて、ここにクエリがあります:
いくつかのインデックスを手動でセットアップしました。EGM と BioEntity の両方に、TypeId と Name を含むクラスター化されていないカバリング インデックスがありました。ただし、クエリは 5 日間実行され、いずれも終了しませんでした。そのため、データベース チューニング アドバイザを実行して動作を確認してみました。古いインデックスを削除し、代わりに統計と2つのクラスター化されたインデックスを作成することを提案しました(各テーブルに1つずつ、奇妙に感じるTypeIdを含むだけです-または単にばかげています-しかし、とにかく試してみました)。
現在6日間実行されていますが、どうすればよいかまだわかりません...何かアイデアはありますか? これをより速く (または、少なくとも有限に) するにはどうすればよいですか?
更新: - OK、クエリをキャンセルし、サーバーを再起動して OS を再起動しました - 具体的には、nvarchar フィールドをはるかに小さいサイズにトリミングし、「like」を交換して、提案された変更を加えてワークフローを再実行しています「=」の場合。これには少なくとも 2 時間かかるので、後でさらに更新を投稿します。
更新 2 (1PM GMT 時間、18/11/09): - 推定実行計画では、テーブル スキャンに関する 67% のコストとそれに続く 33% のハッシュ マッチが明らかになりました。次は 0% 並列処理 (これは奇妙ではありませんか? 推定実行計画を使用するのはこれが初めてですが、この特定の事実に眉をひそめただけです)、0% ハッシュ一致、さらに 0% 並列処理、0% トップ、0 % table insert と最後に別の 0% select into です。予想どおり、インデックスはくだらないようです。そのため、手動でインデックスを作成し、提案されたくだらないインデックスを破棄します。
mysql - 2つのON句を使用したMYSQL内部結合
私は、ユーザーがいて、住所と住所の両方を保存する単純なデータベースをセットアップしようとしています。私は2つのテーブルを持っています
ユーザー
住所
内部結合を実行しようとしているので、次のような結果セットになります。
id-名前-住宅-通り-住宅_郊外、郵便_通り、郵便_郊外
アドレスの詳細についてnullの結果が表示され続けます。これは、アドレステーブルから2セットのデータを取得していて、競合があるためだと思います。住居IDと郵便IDにリンクされている住所欄を同時に返却することはできますか?
私のSQL構文は
編集。指摘されているように、私のDB設計はかなり貧弱であり、私はそれを改善しようとしています。私が達成しようとしている重要なことは、個人の詳細とそれに関連する住所および住所を保存できることです。たとえば、データベースを拡張して職場の住所を含めることは決してありません。これにより、テーブルの複雑さが軽減されることを願っています。
sql-server - SQL Server:設計:組み込みのSelectステートメントまたはINNER JOIN?
私は次のテーブル構造を持っています-
サイト:サイトのマスターテーブル
組織:組織のマスターテーブル
ユーザー:ユーザーのマスターテーブル(各ユーザーはUser.OrgIdを介して一意の組織にリンクします)
OrgSite:「組織固有の」サイトの詳細(OrgId、SiteId、SiteName、SiteCode)を保存します。すべてのサイトではなく、Orgにアクセスできるサイトのみ。
UserSite:ユーザーをアクセス可能なサイト(UserId、SiteId)にリンクします。ユーザーが組織にリンクされると、UserSiteはOrgSiteテーブルのサブセットになります。
ItemSite:アイテムとサイト固有の詳細(ItemID、SiteId、OrgId、...)を格納するテーブル
ここで、「ItemSite」からレコードをフィルター処理して表示する必要があります。そのため、サイトコードも表示する必要があります。したがって、次の2つのオプションが表示されます-
1.ビューを作成します: vw_ItemSite_UserSite_OrgSite(SiteIdのすべてのテーブルに内部結合)-これにより、「OrgSite」テーブルで利用可能なすべての組織固有の詳細(つまり、SiteCodeなど)にアクセスできます。
組織固有のSiteCodeとSiteNameが必要なため、ビューに「OrgSite」を含める必要があることに気付く場合。UserSiteはすでにサイトをフィルタリングしているため、OrgSiteテーブルを「除外」して、不要なINNERJOINを削除できます。
2.上記の注意に基づいて-2番目のオプションはVIEWを作成することです:vw_ItemSite_UserSiteそしてVIEWの'SELECT'ステートメントに次のようなSELECTを埋め込むことができます-
私の唯一の意図は、埋め込まれたselectステートメントの評価の前にINNERJOINとWHEREが評価されると信じていることです。それで、これは私にいくらかのパフォーマンスを節約しますか?または、vw_ItemSite_UserSite_OrgSiteを使用する方が良いという考えです。
オプション#1またはオプション#2?
ありがとうございました。