問題タブ [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 投票する
2 に答える
2546 参照

sql - 結合されたテーブルのすべてのエントリに一致する行のみをフェッチする (SQL)

次の5つのテーブルがあります。

  • ISP
  • 製品
  • 繋がり
  • アドオン
  • AddOn/Product (多対多関係のピボット テーブル)。

各製品は ISP にリンクされ、各接続は製品にリストされます。各製品は、ピボット テーブル (製品 ID 用とアドオン ID 用の 2 つのフィールドのみ) を使用して、多数のアドオンを持つことができます。

私が興味を持っている結果は、リストされているアドオンとの各接続です (これには MySQL の GROUP_CONCAT を使用して、アドオンの名前フィールドのコンマ区切りのリストを作成しています)。これはそのままで問題なく動作します。クエリは次のようになります。

製品にアドオンがまったくない可能性があるため、LEFT JOINS を使用しています。

私の問題は、(1,14,237) のようなアドオン ID のリストとして提示された、リストされた接続が持つ必要があるいくつかのアドオンを選択できることです。JOIN ステートメント ( AND pa.addon_id IN (...) ) の追加条件としてそれを入れると、リストされたアドオンの 1 つだけを持つすべての接続が返されますが、必ずしもすべてではありません。

少なくともすべてのアドオンを持つすべての接続を SQL 経由で返す方法はありますか?

0 投票する
16 に答える
46916 参照

sql - SQL ANSI-92 標準が ANSI-89 よりも採用されていないのはなぜですか?

私が働いたすべての会社で、人々がまだ ANSI-89 標準で SQL クエリを書いていることがわかりました。

ANSI-92 標準ではなく:

このような非常に単純なクエリの場合、読みやすさに大きな違いはありませんが、大きなクエリの場合、結合条件をグループ化してテーブルを一覧表示すると、結合で問題が発生する可能性のある場所を簡単に確認できることがわかります。すべてのフィルタリングを WHERE 句に保持しましょう。言うまでもなく、外部結合は Oracle の (+) 構文よりもはるかに直感的です。

私は ANSI-92 を人々に広めようとしていますが、ANSI-89 よりも ANSI-92 を使用することで具体的なパフォーマンス上の利点はありますか? 自分で試してみますが、ここにある Oracle のセットアップでは、EXPLAIN PLAN を使用できません。人々がコードを最適化しようとするのは嫌ですよね?

0 投票する
5 に答える
16274 参照

sql - SQL JOIN クエリの作成

2 つのテーブルを含む単純なクエリを作成しようとしています。「person」テーブルには、一意person_idの と がnameあり、「friends」テーブルには、 person テーブルのの FK である と がありperson_idます。friend_idperson_id

person1の友達全員の名前を選びたいです。

INステートメントを使用してこれを簡単に行うことができます。

しかし、私はJOIN声明を書くのが得意ではありません。誰かが同等の結合を書くのを手伝ってくれますか?

明らかにこれは不自然な例ですが、実際のデータで試してみたところ、概念的に何かが欠けています。ありがとう。

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

php - mysql 参加の質問

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

表1:

テーブル 2:

私が達成しようとしているのは、エージェント部門がテーブル2の部門と等しいテーブル1からすべての行を選択することです。

いくつかの異なる結合ステートメントを試しましたが、構文が間違っているか、このテーブル設定では機能しません。私は MySQL に関しては初心者であり、JOIN を読んだ限りでは複雑なスペクトルの端にいます!

私が検討したもう1つのオプションは、列「部門」をtable1に複製することですが、フロントエンドでもう少しコーディングが必要になるため、それを行わなくても目的の結果を達成できるかどうかを確認しようとしています.

どんな援助も大歓迎です。

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

sql - 単純なSQLコードは私を回避します..2つの不一致のテーブルを統合します

1つのテーブルから1つのフィールドを選択し、それを一時テーブルに格納しています。

そのテーブルが0行で終わることがあります。

そのフィールドを20以上のフィールドがある別のテーブルに追加したい

フィールド番号が一致しないため、通常のユニオンは機能しません。比較するものがないので、アウターは私にはうまくいきません。NVLは最初の一時テーブルでは機能しません。

誰もがそれを行う方法を知っていますか?

更新しました:

私は言及しませんでした....1つのフィールドを取得するテーブルが他の場合に一致するものを見つけたとき、私が現在使用しているこのコードは機能します...。

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

sql - 単純な T-SQL 結合の質問

table2 を結合し、WHERE ステートメントで table2 列を使用して、table1 からレコードを選択しようとしています。table1 の Col1 と Col2 は、table2 の col1 に格納できます。table2 の col1 を table1 の col1 または col2 の値と結合する必要があります

これが私が作成したSQLステートメントです(疑似):

これにアプローチする最良の方法は何ですか?

0 投票する
5 に答える
2399 参照

sql - 自己結合クエリ

次の表を検討してください。

自宅の電話は持っているが携帯電話を持っていない人を探しています。

このクエリは機能します:

しかし、これはしません:

2 つの唯一の違いは、h.type = 'home'条件の場所です。最初の場合はwhere句内にあり、2 番目の場合は句の一部ですon

2 番目のクエリが最初のクエリと同じ結果を返さないのはなぜですか?

0 投票する
5 に答える
41479 参照

linq-to-sql - linq to sql: 同じテーブルの複数の列を結合する

Linq を介して同じテーブルの複数の列を内部結合するにはどうすればよいですか?

例:私はすでにこれを持っています...

これを追加する必要があります...

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

ms-access - MS Access は、リンクされたテーブル (同じ SQL サーバー データベースにリンクされている) をどのように結合しますか?

各テーブルが同じ SQL Server データベース内のテーブルにリンクされている場合は常に、リンクされたテーブルを含む MS Access データベースがあります。Access 内に 2 つのテーブルを結合するクエリがあります (特に、結合を使用して別のテーブルに基づいてテーブルを更新しています)。

問題は、結合を行う前に Access がすべてのテーブル データを "ダウンロード" するかどうかです。それともスマートで SQL Server に参加していますか?

クエリは次のとおりです。

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

performance - PostgreSQL では、別のテーブルではなく、同じテーブルに TEXT 列を含める方が高速ですか?

どの設計が PostgreSQL でより高速に実行されると思いますか?

  1. varchar などの 15 列のテーブルを作成しますが、すべての TEXT 列を別のテーブルに配置し、このテーブルに fkey リンクを戻します。そして、ID が「4」のレコードを検索し、結合されたテーブルの TEXT 列からのものを含め、すべての行を引き戻すとします。テーブルに 500,000 行あるとします。

  2. varchar などの 15 列のテーブルを作成し、同じテーブルに TEXT 列を含めます。もう一度、上記と同じことを想像してください。レコード ID 4 を取得して完全なレコードを取得すると、テーブルには 500,000 行あります。

つまり、ほとんどのデータベースでは、私が理解しているように、これらの TEXT 列がどのように機能するかの物理層に降りると、実際には各行のテーブル列に小さな ID が保持され、その ID は別のものに移動します。データベース内の排他的なページ ブロック (またはその他の命名法)。したがって、私には、fkey結合のオーバーヘッドが不要であり、TEXT列が実際には特定のテーブルのその列の整数スペース以上を占有していないため、オプションBの方が高速に実行されるように思えます-その整数は、データベース内の別のページブロックへのキーです。