問題タブ [self-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 - SQLのクロス結合からの組み合わせ(順列ではない)
それ自体にクロス結合したいテーブルがある場合、重複した行を削除するにはどうすればよいですか? または、別の言い方をすれば、「順序は関係ない」クロス結合を行うにはどうすればよいですか?
たとえば、テーブル T がある場合:
A | を取得しないように、それ自体に交差結合します。行
私は次のようになります:
しかし、私にとってA、BはB、Aと同じです。
これらの重複を削除する良い方法はありますか? 言い換えれば、順列ではなく組み合わせが必要です。
php - MySQL / PHP重複した、同一ではない、MySQL自己結合からの戻り値を排除する
私は小さなデータベースを持っており、400頭弱のポニーの詳細を保持しています。そのテーブルをクエリして、各ポニーの関連する詳細と、その所有者とブリーダーの名前を示すテーブルを返したいと思います。データは主に次のように保持されます。
- プロファイル-個々のポニーに割り当てられたすべての情報を保持するテーブル。これには、父と母の登録番号、所有者とブリーダーのDBに割り当てられたIDが含まれます。
- 連絡先-人々の情報のためのテーブル。以下のクエリで「所有者」として、また「ブリーダー」として参加しました。
- prm_ *-色、品種などの幅広い詳細を保持する複数のパラメータテーブル。
私が問題に直面しているのは、最初の自己結合を試みたときです。各プロファイルの父と母の名前、および最初にポニー自身の名前を取得するために、プロファイルテーブルを3回クエリします。クエリを実行すると、多くの(すべてではない)プロファイルに対して重複する行が返されます。DISTINCTを使用すると、これらのほとんどが排除されましたが、特に種雄牛やダムが記録されていないポニーの場合、結果が同じではないという問題が残ります。
私は問題をグーグルで検索しました、そしてそれはあちこちに現れます、しかし私は与えられた解決策で何が起こっているのかを完全に理解することができません。なぜ問題が発生するのか、まったくわかりません。誰かが私に問題とその解決をステップスルーしてくれませんか?私は最も感謝するでしょう。
現状の私のクエリ(わずか387匹のポニーから408の結果を返します!):
sql - 「not in」クエリの最適化について助けが必要
最適化しようとしている SQL クエリがあります。
基本的に、ALERT_ORIGIN が「FOO」で、同じテーブルに ALERT_ORIGIN「BAR」の対応する行がないすべての行を取得する必要があります。テーブルには約 17000 行が含まれており、ALERT_ORIGIN "BAR" を持つレコードは約 1000 しかありません。だから私のクエリは私に約16000行を与えるはずです。
編集: 現在のクエリは非常に遅いです。現在、インデックスはありません。
oracle - Oracle での外部結合と自己参照
課金が必要なさまざまなサイトで契約している顧客がいます。
サイトの請求先住所には、顧客の住所で請求されるサイトと別の住所で請求されるサイトの 2 種類があります。サイトの種類はフィールド「ステータス」によって処理されます。サイトが顧客の住所で請求される場合、フィールドは「C」に等しくなります。別のサイトのアドレスに請求される場合、それは「A」に等しく、フィールド「bill_site_id」には請求に使用される「site_id」が入力されます。請求書の送付先住所を 1 回のクエリで取得したい...
顧客が 2 つのサイトを持っているとします (A は課金のための B を指します)。要求には明らかに 2 つのサイトが表示されますが、請求に使用するサイト (B) のみが必要です。これだけを取得するにはどうすればよいですか?
これが私の質問です(匿名なので、優しくしてください:-))
sql - SQL: 各行を 1 回だけ使用する自己結合
重複の可能性:
SQLのクロス結合からの組み合わせ(順列ではない)
現在、次のレコードを含むテーブルがあります。
同じ文字は、いくつかの共通の基準を示します (たとえば、列「文字」の共通の値)。次のように、基準に基づいて自己結合を行います。
この結合により、次のような結果が得られます。
ただし、各ペアを 1 回だけ含めたい (順列ではなく組み合わせ)。どうすれば次のようになりますか:
mysql - Group Byと自己結合を使用して、最小、最大、始値、終値の日次価格再設定セットを返す方法は?
解決済み
すべてがStackOverlowを歓迎します!
私がいなくなっている間、人々は2つの解決策を残しました(みんなに感謝します-2つの実用的な解決策のためにカルマを配るためのプロトコルは何ですか?)
これが私が投稿に戻ってきた解決策です。それはまだ別のStackOverソリューションから派生しています:
集計関数を使用してMySQLクエリでグループ化されたレコードの最初と最後のレコードをフェッチするにはどうすればよいですか?
...そして私の適応は:
上記の「Q」で始まるデータは、私が終わらせようとしているデータです。私のログはかなり一般的だと思うので、これが他の誰かに役立つことを願っています。
私は、これら3つのソリューションの1つにパフォーマンス上の利点があることを確信しています。誰かがMySQLとクエリ最適化の内部動作を知っていて、「推奨される」ソリューションを推奨したい場合、それは将来知っておくと便利です。
解決した終了
更新#2
これを使用して、さらに別の方向からそれに到達しようとしています:
http://forums.mysql.com/read.php?65,363723,363723
私は得る:
これは、以下の最初のUPDATEのクエリと同様の機能障害に悩まされています。返される「clsqt」(cls_price)値は、データで見つかった最後の終値です。Blech。
さらに、「ひどく複雑な」クエリスペースに再び入り始めており、パフォーマンスには良くありません。
しかし、誰かが「clsqt」値の修正を見た場合、私はそれを喜んで受け入れ、後日パフォーマンスの問題を解決します。:)
更新の終了#2
アップデート
とても近い...これが私が今日いるところです:
これにより、すべてが正しく再調整されますが、正しい'cls_price'('cls_price'の値は'opn_price'と同じになります)。
ただし、「cls_date1」と「cls_date3」は正しい値であるため、閉じる必要があります。
誰かが私がいないものを見ますか?
更新を終了
私は左結合と自己結合に関してSOを熟考してきました...そして、私は不平を言っているのではないことを認めなければなりません。
私が望むものに非常に近いように見えるこの「Q」を見つけました: mysqlの右テーブルの条件を使用した左結合
私がやろうとしているのは、単一のテーブルから始値、終値、最小値、最大値の日数を取得することです(以下のサンプルデータ)。
最小と最大は簡単です:
結果を日付ごとにグループ化して返したいのですが、次のようになります。
さて、私はたった1つの参加で「赤ちゃんのステップ」を試してみます...
...「グループ機能の使用が無効です」というメッセージが表示されます
もちろん、「GROUP BY」を削除しても、集計列を返す必要があるため、役に立ちません。
私は、オープンとクローズの結果を取得するが、最小値と最大値を取得しない非常に複雑なソリューションを持っています-そしてそれらは別々の結果セットにあります。これを必要以上に複雑にし、上記の「Q」で引用した自己結合で何が起こっているのかを把握できたので、全体的なコーディングが計り知れないほど改善されたように感じます。しかし、私は先週末にこれに12時間ほど費やし、これまで以上に混乱しています。
すべての洞察と外植と観察はこの時点で歓迎されています...
sql - テーブルに自己結合する
他の人から紹介されたすべての顧客の名前を見つけます。
出力はドリーディリーとミーナキミでなければなりません。
クエリで他の人を参照している顧客を見つけることに成功しました
tsql - 自己結合クエリでレコードを結合の片側に制限する
次のようなテーブル (Term という名前) を考えてみましょう。
ここで、CategoryId 1 と CategoryId 2 という 2 つのカテゴリが定義されており、category1 または category2 のいずれかに属する用語が複数あるとします。これら 2 つのカテゴリ、またはこれら 2 つのカテゴリの 1 つのカテゴリ内で、同じ URI を持つが異なるラベルを持つ用語を見つけようとしています。そのために、自己結合 SQL を作成しようとしました。
これは正常に動作しますが、各行が 2 回返されます...たとえば、
TermId1、TermId2 TermId2、TermId1
termId1 が termId2 と異なる場合、逆順の結果を得る必要はありません。では、一度結果を得るにはどうすればよいでしょうか。
ご協力ありがとうございました、
histogram - R のヒストグラムが与えられた場合の、リレーション R の自己結合操作の推定サイズ
クエリ オプティマイザは通常、データ分散の概要を使用して、クエリ処理中に生成される中間テーブルのサイズを見積もります。このような一般的な要約スキームの 1 つはヒストグラムです。これにより、入力範囲がバケットに分割され、各バケットに含まれるタプルの数の累積カウントが維持されます。バケット内の分布は、推定のために均一であると想定されます。
R次の図は、ドメイン を持つ離散属性 aのリレーションのヒストグラムの 1 つを示しています[1..10]。
自己結合操作の推定サイズ R x R
ソリューションで与えられた答え:B
答えはどのように計算されますか?
sql-server - SELF JOIN で GROUP BY を使用するには?
人物とそのマネージャーを同時に保持する人物テーブルがあります。
マネージャーのメールを選択するために SELF JOIN を使用していますが、多くの重複があります。
http://imageshack.us/photo/my-images/3/withoutgroupby.png
クエリで GROUP BY を使用するにはどうすればよいですか
GROUP BY M.prs_id
Manager_id でグループ化するクエリの最後にこの行を追加すると、このエラーが表示されます
列 'qrd_prs_person.prs_id' は、集計関数にも GROUP BY 句にも含まれていないため、選択リストでは無効です。