問題タブ [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.

0 投票する
3 に答える
37317 参照

sql-server - SQL Server 2008 でマルチパート識別子をバインドできませんでした

私は2つのテーブルを持っています

requests( ID, company_id, amount)

companies( ID, name)

FK 制約付き ( requests.company_id-> companies.id)

requests.companyすることができますNULL

すべてのリクエストを取得しcompany_id、適切な会社に置き換えるnameか、会社が指定されていない場合は空白のままにする必要があります。

次のクエリがあります。

フィールドにNULLが入るまで正常に機能していますcompany

私は次にやろうとしました:

しかし、得た

マルチパート識別子「R.company_id」をバインドできませんでした

そして、ON句シフトのフィールドで同じエラーが発生しました。私は何を間違っていますか?

0 投票する
2 に答える
279 参照

mysql - MySQL - リンク テーブルから要素を取得しますが、それらの要素のみを取得します

リンク テーブルからの選択と、余分な結果の除外に問題があります。

パブリケーションは、 package_publicationsテーブルによってパッケージに属します。

たとえば、自分の出版物の ID が 11 と 47 であることを知っています。これらの出版物のみを含むパッケージを返品したいと考えています。

ここで、結合を行い、明らかな内部結合の後に何かを行うと、 package_publicationsリンク テーブルwhere publications.id IN (11, 47)にこれらの値のいずれかを持つすべてのパッケージが返されます。

BOTH (またはそれ以上 - 2 つに限定されません) しかないパッケージを一致させたいと考えています。AND が必要な場合は事実上 OR を使用していますが、SQL でアプローチする方法がわかりません。

0 投票する
2 に答える
253 参照

sql - SQL内部結合でテーブルを「スキップ」する

つまり、次のスキーマがある場合:

B_dataここで説明されている関係を取得して使用したい場合、次の間にC_data違いはありますか?

と:

ほとんどのデータベースはどちらのクエリも同じになるように最適化すると思いますが、外部キーの制約により、tableA経由での結合がtableAはるかに効率的になる場合がありますか?これらのクエリが異なる結果を生成する可能性がある場合はありますか?

0 投票する
4 に答える
9849 参照

linq - Linq で子コレクションをフィルタリングする方法

単一の linq クエリを使用して、linq でエンティティの子要素をフィルター処理する必要があります。これは可能ですか?

関連する 2 つのテーブルがあるとします。Verses と VerseTranslations。LINQ to SQL によって作成されたエンティティは、VerseTranslation のコレクションである子オブジェクトを含む Verse オブジェクトを持っているようなものです。

次のlinqクエリがある場合

ID が 1 の Verses のコレクションを取得し、各 verse オブジェクトには VerseTranslations のすべての子オブジェクトが含まれています。

私がやりたいことは、Verse Translations の子リストをフィルタリングすることです。

これまでのところ、私が思いついた唯一の方法は、新しい Type Anonymous を使用するか、それ以外の方法です。次のように

上記のコードは機能しますが、新しいクラスを宣言する必要がありました。新しいクラスを宣言する必要がないように、子テーブルのフィルタリングを最初のlinqクエリに組み込むことができるような方法でそれを行う方法はありませんか?

よろしく、マック

0 投票する
2 に答える
15776 参照

hibernate - 内部結合フェッチプロパティが関連付けられていない場合、多対1のhqlクエリを休止状態にします

hbm.xmlに、次のように多対1の関連付けを設定しています。

そして、私はインストルメンテーションを使用して真の遅延読み込みを行っています。

しかし、他のテーブルへの内部結合フェッチを使用してhqlクエリを実行すると、他のテーブルの値であるオブジェクトを含む必要があるプロパティはnullのままになります。他のテーブルの値のオブジェクトがhibernateによって作成されているのを見ることができますが。

誰かがこの問題について何か洞察を持っていますか?

アップデート:

0 投票する
3 に答える
8454 参照

sql - 単一のテーブルでINNERJOINを実行する代わりのSQL

何百万もの行を含む大きなテーブル(TokenFrequency)があります。次のように構成されたTokenFrequencyテーブル:

表-TokenFrequency

  • id-int、主キー
  • ソース-int、外部キー
  • トークン-char
  • count-int

私の目標は、2つのソースに同じトークンが含まれているすべての行を選択することです。たとえば、私のテーブルが次のようになっている場合:

id --- source --- token --- count
1 ------ 1 --------- dog ------- 1
2 ------ 2 --- ------ cat -------- 2
3 ------ 3 --------- cat -------- 2
4 ------ 4---------豚--------
55 ------5---------動物園-------16
--- ---5---------猫--------17
------5---------豚--------1

SQLクエリでソース1、ソース2、およびカウントの合計を取得したいと思います。例えば:

source1 ---source2---トークン---カウント ----
2----------- 3 --------- cat -------- 4-
--- 2 ----------- 5 --------- cat -------- 3
---- 3 ---------- --5---------猫--------3
---- 4 -----------5---------豚- ------ 6

次のようなクエリがあります。

このクエリは正常に機能しますが、私が抱えている問題は次のとおりです。

  1. 数百万行のTokenFrequencyテーブルがあるため、この結果を取得するには、より高速な代替手段が必要です。
  2. 私が持っている現在のクエリは重複を与えています。たとえば、その選択:
    source1 = 2、source2 = 3、token = cat、count = 4
    source1 = 3、source2 = 2、token = cat、count = 4
    これはそれほど問題ではありませんが、方法がある場合それらを排除し、次に速度の増加を得るには、それは非常に便利です

私が抱えている主な問題は、現在のクエリでのクエリの速度であり、完了するまでに数時間かかります。テーブル上の内部結合自体が問題であると私は信じています。TokenFrequencyテーブルの1つのインスタンスを使用するだけで、内部結合を削除して同様の結果を得る方法が必要だと確信しています。私が言及した2番目の問題も、クエリの速度の向上を促進する可能性があります。

このクエリを再構築して、同じ結果をより速く、より効率的に提供する方法が必要です。

ありがとう。

0 投票する
1 に答える
465 参照

linq-to-sql - ストアド プロシージャの変換 - Linq2SQL へ (count、max、group、orderby)

2 つのテーブルがあります (1:N)

と -

Master.idMaster と lnk.idMaster の間のリンク

私はSQLクエリを持っています:

この T-SQL クエリを、できれば C# の Linq-to-SQL ステートメントに変換する必要があります。

0 投票する
2 に答える
153 参照

php - 複数の OR の代わりに結合する

次の構造を持つ 2 つのテーブルがあります。

user の友達からのみ作成された投稿を選択したいと思いますx。私の最初の計画は、次のコードを使用することでした。

ただし、これは機能しないようです。(私は x によって行われたすべての投稿を取得し、X の友人によって行われたすべての投稿を行います。私が考えることができる唯一の代替手段は、OR の (おそらく非常に長い) 文字列を使用することです

代替ソリューションはありますか?ありがとう。

0 投票する
1 に答える
595 参照

sql - 外部結合または動的クエリ、どちらが最善の方法ですか?

次の表があります (表に含まれるデータを単純化しました)。

RateExtra には、キーの 1、2、3 と名前のガソリン サーチャージ、管理費、GST の 3 つの値のみが含まれます。

これは、現在の目的に対しては正常に機能しています。値のリストが一致するレコードとともに表示され、RateExtra は rate_extra_name についてのみ照会されます。

したがって、次の結果が得られる可能性があります。

  • 料金表1、1、ガソリンサーチャージ
  • 料金表1、2、管理費
  • 料金表2、3、ガソリンサーチャージ
  • 料金表4、4、GST
  • 料金表6、5、ガソリンサーチャージ

これを変更して、返される各レコードに RateExtra テーブルの各値のレコードが含まれるようにするよう依頼されました。一致するレコードがない場合、RateTableExtra テーブルのデータは NULL として返されます。したがって、私のデータは次のように返されます。

  • 料金表1、1、ガソリンサーチャージ
  • 料金表1、2、管理費
  • Ratetable1、NULL、GST
  • 料金表2、3、ガソリンサーチャージ
  • Ratetable2、NULL、管理費
  • Ratetable2、NULL、GST
  • Ratetable4、NULL、PetrolSurcharge
  • Ratetable4、NULL、管理費
  • 料金表4、4、GST
  • 料金表6、5、ガソリンサーチャージ
  • Ratetable6、NULL、管理費
  • Ratetable6、NULL、GST

OUTER 結合を試してみましたが、機能していないようです。RateExtra データが、null を返す RateTableExtra にリンクされているためだと思います。元の結果セットを取得する動的クエリを作成し、rate_extra_id を確認して反復し、結果セットにまだない場合は、必要な場所に NULL データを含む結果に新しい行を追加することを検討しています。これでうまくいくと思いますが、パフォーマンスのキラーになると感じています。

これを行うより良い方法はありますか?誰かが助けてくれることを願っています。

0 投票する
1 に答える
1335 参照

join - テーブルを 2 番目のテーブルに 2 回右結合し、各エイリアスを 3 番目のテーブルの 2 つのエイリアスに内部結合します

多分私はそれについて間違った方法で行っています。これが私がやろうとしていることと私の問題です。

私は3つのテーブルを持っています。アセット (コンピューター、ネットワーク デバイスなど) ポート (コンピューター、ネットワーク デバイスなどのポート) port_connections (port_id_a フィールドと port_id_b フィールドを持ち、各ポートと各アセットをリンクします)

これは実際には、オフィス ビル内の VLAN およびネットワーク デバイス/コンピュータを追跡する方法にすぎません。

方言3を使用して最新バージョンのfirebirdを使用しています。これはfirebirdの問題ではなく、単にSQLの問題であると想定しています。

適切な結合 (port から port_connections への結合) で実行でき、WHERE 句で他の結合を実行できるため、これが可能であることはわかっています。これに関する問題は、資産テーブルをポート テーブルに結合すると、正しい結合が失われることです。

編集:これは私が取り組んでいる最新のクエリです。古いクエリはこの時点では役に立たないからです。この最新のクエリに関する私の問題は、port_connections テーブルを介してリンクされているアイテムを 2 回プルしているように見えることです。したがって、適切な port_connections レコードを取得してから、port_connection のない単一のポートだけを持つ重複レコードを取得します。この後のレコードをどうにかして取り除く必要がありますが、port_connection レコードを持たない他のポート レコードは保持します。

テーブル: アセット:

ポート接続

ポート

編集: 修正は、connection_id をポート テーブルに移動することでした。このクエリは、私が望んでいたことを実行します。