問題タブ [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 - LEFTOUTERJOINから重複を削除します
私の質問は、LEFT JOINの制限と非常に似ていますが、バリエーションがあります。
テーブルSHOPと別のテーブルLOCATIONがあると仮定します。Locationは、テーブルSHOPの子テーブルの一種であり、対象となる2つの列があります。1つは分割キー(単にKEYと呼びます)と「SHOP」番号です。これは、テーブルSHOPの番号「NO」に一致します。
私はこの左外側の結合を試しました:
でも、1つのショップに属する場所がたくさんあるので、重複がたくさんあります。それらを削除して、重複のない「ショップ、キー」エントリのリストを取得したいと思います。
データは正しいですが、重複は次のように表示されます。
代わりに、データを次のように表示したいと思います。
SHOPテーブル:
LOCATIONテーブル:
(ORACLE 10gデータベース)
sql - 両方のテーブルにwhere句がある場合、どうすれば左外部結合を実行できますか?
シナリオは次のとおりです。
私は2つのテーブルを持っています:
私が返そうとしているのは次のとおりです。
- 指定されたauthorization_keyに対してis_active
- external_id / API_User_idペアが存在する場合はそれと一致するSingle_Sign_On_User.id、またはそのようなペアが存在しない場合はNULL
このクエリを試すと:
「test」API_Userレコードは存在しますが、「test_ext_id」レコードは存在せず、どちらのテーブルにも他の値がない場合、レコードは返されません。
私が使用するとき:
期待する結果(NULL、1)が得られますが、そのクエリでは「test_ext_id」レコードが存在する場合はそれを見つけることができませんが、「test」API_Userレコードに関連付けられているすべてのレコードが得られます。
どうすれば自分が求めている結果を得ることができますか?
outer-join - 左外部結合-SQL2005
SQLは十分知っていると思いましたが、左外部結合に問題があります。
deptとaccount_codeでテーブルにリンクする必要がある経費詳細レコードがあります。
クエリは次のようになります。
これは、結合条件に完全に一致するレコードがある限り、うまく機能します。ただし、一致する予算項目がない場合もあります。詳細テーブルから、budgetAmtのnullを含むDetail.Spendを取得したいと思います。代わりに、私はこのレコードをまったく取得しません。
一致するものがない場合、Left Outer Joinは左側(詳細)テーブルを返すことになっていますか?私がここで行っているように、複数の基準が使用されている場合、何か違いはありますか?
ありがとう
mysql - これらのクエリに参加するにはどうすればよいですか?
クエリ1:
クエリ 2:
クエリ3:
基本的に、これらを適切に結合するための構文についてはわかりません。それらを単純に結合するクエリを作成しましたが、フォーラム キャッシュ テーブルに未承認のフォーラム ID が含まれている場合、行全体が返されません。
本当に必要なのは、クエリ 1 とクエリ 2 をカテゴリ ID で結合したままにし、クエリ 3 を id = catID で外部結合のままにすることです。
sql - SQL : 結合の where と on
ばかげた質問かもしれませんが、次の 2 つのテーブルを考えてみてください。
この INNER JOIN が私が望む結果を与えるのはなぜですか (ON 句で [年] をフィルタリングする):
また、LEFT OUTER JOIN に 2010 年のレコードが含まれているのはなぜですか?
そして、「WHERE」句に [year] フィルターを記述する必要があります。
私が言ったように、おそらくばかげた質問ですが、それは私を悩ませています!
sql - SQL: 結合から右側の値を収集する
taggings と呼ばれる結合テーブルを介して、質問に多くのタグがあるとします。私はこうして参加します:
'piano' などの特定のタグ名に従って結果を並べ替えたいので、ピアノが一番上に表示され、次に他のすべてのタグがアルファベット順に表示されます。現在、私はこの注文句を使用しています:
これは完全に間違っています。最初に返された結果には、「ピアノ」のタグが付けられていません。私の問題は、タグ名を何らかの形でグループ化し、それに対して順序付けテストを行う必要があることだと思います。結果の結合テーブルの構造のために、まっすぐな tags.name に対してそれを実行しても機能しないと思います (機能します)タグテーブルで単純な選択を行うだけの場合)しかし、それを修正する方法がわかりません。
アドバイスありがとう、マックス
編集 - Marcelo re COALESCE に返信 Marcelo に感謝します。これは前に見たことがありませんでした。API をより適切に読み取る必要があります。これは実際には役立ちますが、合体節も選択した場合に限ります。つまり、これ:
それでも偽の結果が得られます。ただし、これは次のとおりです。
正しい結果を返します。ただし、質問IDを選択したいだけです。とにかく確実に近づいてる…
php - 複数の左結合、phpで出力する方法
参加する必要のあるテーブルが3つあります。契約テーブルはメインテーブルであり、「ジョブ」テーブルと「会社」テーブルは、契約テーブルに関連付けることができる追加情報です。
したがって、「contracts」テーブルのすべてのエントリと、「jobs」および「companies」データが存在する場合にのみ必要なので、次のようにクエリを作成しました。
では、これをPHPでどのように出力しますか?これを試しましたが、「通知:未定義のインデックス:contracts.id」という未定義のエラーが発生し続けました...
どんな助けでも大歓迎です。
sql - 親子チェーンの外部結合
以下の表と関係を考慮してください。
親-1:多く-子供-1:多く-サブ子供
- 親は子供の記録を持っているかもしれませんし、持っていないかもしれません。
- 子供は常にサブチャイルドレコードを持っています。
親の名前、children.name、subchildren.nameが一致する場合は、親の名前を選択するクエリを作成したいと思います。
ここで、私は親と子の間で左外側結合を行わなければならないことを理解しています。しかし、私は子供とサブチャイルドの間にどのような結合を置くべきですか?
sql - sybase - 3 つのテーブル結合の反対側にある、別のテーブルにない 1 つのテーブルの値
仮定の状況: 私は特注看板製作会社で働いており、一部のクライアントは、現在使用しているよりも多くの看板デザインを提出しています。使用されたことのない標識を知りたい。
関連する 3 つのテーブル:
表 A - 会社の標識
sign_pk(ユニーク) | company_pk | sign_description
1 --------------------1 ---------------- 小
2 ---------- -----------------------1 ---------------- 大
3 -------------------- 2 ---------------- ミディアム
4 --------------------2 ---------- ------ ジャンボ
5 --------------------3 ---------------- バナー
表 B - 会社の所在地
company_pk | company_location (一意)
1 ------|------ 987
1 ------|------ 876
2 ------|------ 456
2 ------|------ 123
表 C - 場所の標識 (少し大げさですが、各行には 2 つの標識を含めることができ、会社の場所から場所の標識への 1 対多の関係です)
会社の場所 | フロントサイン | back_sign
987 ------------ 1 ------------ 2
987 ------------ 2 -------- ---- 1
876 ------------ 2 ------------ 1
456 ------------ 3 ---- -------- 4
123 ------------ 4 ------------ 3
したがって、a.company_pk = b.company_pk および b.company_location = c.company_location です。私が試して見つけたいのは、sign_pk 5 がどの場所にもないことを照会して取得する方法です。すべてのテーブルに何百万もの行があるため、すべての front_sign および back_sign 値に対して各 sign_pk をクエリすることは、少し非現実的です。テーブル a は sign_pk と company_pk でインデックス付けされ、テーブル b は両方のフィールドでインデックス付けされ、テーブル c は会社の場所のみでインデックス付けされます。私が書き込もうとしている方法は、「各標識は会社に属しているため、その標識に関連付けられている会社に属する場所のいずれかで、前面または背面の標識ではない標識を見つけてください」という行に沿っています。
私の当初の計画は次のとおりでした。
Select a.sign_pk
from a, b, c
where a.company_pk = b.company_pk
and b.company_location = c.company_location
and a.sign_pk *= c.front_sign
group by a.sign_pk having count(c.front_sign) = 0
前の記号を実行してから後ろの記号を繰り返すだけですが、 c は外部結合の内部メンバーであり、内部結合でもあるため、実行されません。
この全体はかなり複雑ですが、誰かがそれを理解できるなら、私はあなたの親友になります.
sql - SQLのOUTERJOINが使用される良い例は何ですか?
インタビューで「SQLの外部結合とは」という質問をよく受けます。
答えることはできますが、(左)外部結合が使用されている古典的で優れた実際の例は何でしょうか?