問題タブ [outer-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.
sql - フルアウタージョインが期待どおりに機能しない問題
あるテーブルから現在の残高を差し引き、別の履歴テーブルから前の残高を差し引くクエリがあります。特定の商品に現在の残高がなく、以前の残高がある場合、それを正しく差し引くことができます...この場合は0〜100のようになります。
しかし、商品に現在の残高があり、以前の残高がない場合、結果を得ることができません。両方のテーブルで完全外部結合を実行したにもかかわらず、クエリで現在の残高が選択されません。
以下は私の質問です:
sql-server - 左結合の上位 1
以下のクエリでは、同じマーカー キーを持つ dps_markers に複数の行が存在する可能性がありますが、最初の行に対してのみ結合したいと考えています。このクエリを使用して上位 1 と ORDER BY を削除すると、mbg.marker_value の値が取得されますが、そのまま実行すると常に null が返されます
c# - Linqで完全外部結合を行う方法は?
正確に最適に設計されていないデータベースを継承したため、一部のデータを操作する必要があります。私がしなければならない種類のことのより一般的なアナロジーを与えましょう:
Student
テーブル、StudentClass
彼が参加したすべてのクラスの記録を保持するテーブル、およびこの生徒を教えたすべての教師を格納するテーブルStudentTeacher
があるとします。はい、私はそれがばかげたデザインであることを知っています、そしてクラステーブルに先生を保存することはより理にかなっています-しかしそれは私たちが取り組んでいるものです。
今度はデータをクリーンアップしたいと思います。生徒に教師がいるがクラスがない場所、またはクラスはあるが教師がいない場所をすべて見つけたいと思います。したがって、SQL:
Linqでそれをどのように行いますか?
sql - SQL: MySQL 4 を使用して結合されていないアイテムのリストを取得する
私は SQL が苦手で、解決方法がわからない問題に遭遇しました。SQL に関する本 (O'Reilly's Learning SQL) の一部を読んで再読しましたが、必要な情報が含まれていると期待していましたが、見つかりませんでした。
私の問題は次のとおりです。簡単に説明できるように、簡単な例を使用します。
car、rim、および 2 つの組み合わせである carRim という 3 つのテーブルがあります。
テーブル carRim には、価格の追加属性があります。これは、リムの価格が車の種類ごとに異なる可能性があるためです。私が持っている制約は、すべてのタイプのリムをすべてのタイプの車に一度だけ結合する必要があるということです. したがって、car-rim のすべての組み合わせは一意である必要があります。
車にリムを追加したい場合、その車にまだ結合されていないリムのリストが必要です。このためには、リムの合計リストと、リムを追加したい車に既に結合されている carRim のリストに対して、それぞれリム テーブルと carRim テーブルが必要だと思います。
特定の車に結合されているリムのリストを作成する (単純な) クエリを作成しました。次の例では、carId 9 の車です。
しかし今、特定の車にまだ結合されていないリムのリストが必要です。問題は、LEFT OUTER JOIN を実行すると、取得したリストが他の車へのリムの結合で「汚染」されるため、「WHERE carRims.carId IS NULL」のフィルター条件が機能しないことです。
もう 1 つの課題は、クライアントが MySQL 4 を使用しており、現時点ではアップグレードできないため、サブクエリなど、MySQL 5 の新しい構文を使用できないことです。
この問題に対するクエリを MySQL 4 で作成できますか? 私はできると思います。
ありがとう!
hibernate - (Lazy) Hibernate Criteria API を使用した LEFT OUTER JOIN
Criteria API を使用して、2 つのテーブル間で LEFT OUTER JOIN を実行したいと考えています。Hibernate のドキュメントで見つけたのは、次のメソッドだけです。
ただし、これは、返される結果の数のために、内部結合または右外部結合のいずれかを実行します。
また、参加をレイジーにしたいです。これどうやってするの?
乾杯!
更新:エイリアスを使用すると、結合が自動的に INNER JOIN になるようです。その「裏話」にはまだ把握できていないものがあります。だから、今日はエイリアスはありません。これにより、2 つのテーブルに制限を適用するという問題が残ります。どちらにも列 (より適切な場合はプロパティ) ' name ' があるためです。
tsql - NHibernate と Sql Server 2008 で外部結合フェッチを使用する必要がありますか?
外部結合フェッチについて、Nhibernate のドキュメントには次のように記載されています。
データベースが ANSI または Oracle スタイルの外部結合をサポートしている場合、外部結合フェッチは、データベースとの間の往復回数を制限することでパフォーマンスを向上させる可能性があります (データベース自体によって実行される作業が増える可能性があります)。外部結合フェッチを使用すると、多対 1、1 対多、または 1 対 1 の関連付けによって接続されたオブジェクトのグラフを、単一の SQL SELECT で取得できます。
現在のプロジェクト ( NHibernateを使用) で外部結合フェッチを使用する必要があるかどうかを判断しようとしています。そのために、 outer join fetchingを使用した場合と使用しない場合のロード時間をテストします。しかし、 Sql Server 2008を使用する場合、全体としてそれが良い戦略か悪い戦略かを知りたいです。
一般的に、Sql Server 2008 を使用しないよりも外部結合フェッチを使用する方が良いですか?
使うか使わないかはどうやって決めるの?(パフォーマンス テストとクエリ プロファイリング以外)
ありがとう
sql - Oracle(Old?)Joins-変換用のツール/スクリプト?
私はオラクルの選択を移植してきました、そして私は次のような多くのクエリに出くわしました:
...と:
(+)構文のすべてのバリアントを変換するためのガイド/チュートリアルはありますか?その構文は何と呼ばれていますか(私はグーグルを精査することができます)?
さらに良い..私のためにこの変換を行うツール/スクリプトはありますか(無料を推奨)?ある種のオプティマイザー?移植するこれらのクエリは約500あります。
この標準はいつ段階的に廃止されましたか?どんな情報でも大歓迎です。
mysql - Linq to Entities と LEFT OUTER JOIN の問題と MANY:1 の関係
Linq to Entities が多対 1の関係をleft outer join
ではなく に変換するのはなぜinner join
ですか? DB 自体に参照制約があり、正しいテーブルにレコードが存在することを保証するため、inner join
代わりに使用する必要があります (はるかに高速に動作します)。
関係が0..1 に対して left outer join
多ければ、正しいでしょう。
質問
inner join
ではなくに変換されるような方法で LINQ を記述することは可能ですかleft outer join
。これにより、クエリの実行が大幅に高速化されます...以前に eSQL を使用したことがありませんが、この場合に使用するのが賢明でしょうか? それは私の問題を解決しますか?
編集
バックグラウンドで使用しているテクノロジーを含めるようにタグを更新しました。
- エンティティ フレームワーク V1
- Devart dotConnect for Mysql
- MySql データベース
Microsoft SQLサーバーで同じことが当てはまるかどうかを誰かがテストできれば、これがDevartの問題なのか、それとも一般的なL2EF機能なのかについての洞察も得られます...しかし、ここではEFが原因だと思います.
sql - LEFTOUTERJOINで返されたnull値を置き換えます
これが返されると、WO_BreakerRailからの一致する行がない日付列にNULL値があります。それらのNULL値だけを@dateに置き換える方法はありますか?
sql - 共通のテーブルに参加して、別のテーブルで拡張するためにFULL OUTER JOINを取得するにはどうすればよいですか?
私はこの問題への答えを求めてStackOverflowとGoogleを精査しました。
Microsot SQLServer2008ビューを作成しようとしています。ストアドプロシージャではありません。関数ではありません。単なるクエリ(つまりビュー)。
私は3つのテーブルを持っています。最初のテーブルは、「CompanyID」などの共通キーを定義します。他の2つのテーブルには、「EmployeeName」などの一般的なフィールドがあります。
WHERE句に「WHERECompanyID=12」と表示されている場合、次のような単一のテーブル結果が必要です。
私は次のような完全な外部結合を試しました:
一致した1つのテーブルからのみNULLを取得していますが、他のテーブルの展開は取得していません。上記のサンプルでは、基本的に1行目と3行目のみを取得しており、2行目は取得していません。
誰かが私がこのクエリを作成するのを手伝って、これがどのように正しく行われるかを教えてもらえますか?
ところで、私はすでに非常にきれいに見え、メモリ内のテーブルにデータを入力するストアドプロシージャを持っていますが、それは私が望んでいることではありません。
ありがとう。
- 編集:
これは、現在機能していないものの完全なサンプルです(「誰か2」と「誰か3」が欠落しています。
結果:
私が欲しいもの: