問題タブ [cross-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.
cross-join - 同様のSQL 2005でのクロス結合
以下に 2 つのクエリを示します。Access では正しく返されますが、SQL では NO が返されます。SQL バージョンの構文は間違っていますか? 興味深いことに、WHERE ステートメントの 2 番目の部分を省略しても、返される値は意味をなしません (つまり、姓 = tblx.姓 = ハル / tbly.姓 = モリス)...何かアイデアはありますか?
--SQL 2005
SELECT tblx.[Last Name], tblx.[First Name] FROM tblx cross join tbly WHERE (tblx.[Last Name] Like '%[tbly].[Last Name]%') AND (tblx.[First Name] Like '%Right([tbly].[名],3) %')
-- アクセス 2007
SELECT tblx.[姓], tblx.[名] FROM tblx cross join tbly WHERE (((tblx.[姓]) Like " " & [tbly].[姓] & " ") AND ((tblx .[First Name]) Like " " & Right([tbly].[First Name],3) & " "))
sql - SUM()OVER(ORDER BY ...)を使用するSQL Server 2008
結果セットでCTEとCROSSJOINを使用しようとしています。現在の行に至るまでの4行を合計したいと思います。私が見つけたオンラインの例では、CTEは使用せず、新しく作成されたテーブルのみを使用しています(http://sqlandme.com/2011/08/17/sql-server-denali-over-rows-range/)。構文は機能するはずですが、「「ROWS」の近くの構文が正しくありません」というエラーが表示されます。
出力例は、次のステートメントを使用した場合です。SUM(y)OVER(ORDER BY x ROWS 4 PRECEDING)sum
XY SUM
誰かがクエリの何が間違っているかについて何か提案がありますか?前もって感謝します。
sql - 1 つのエントリに対して複数のカテゴリを表示する
次のテーブルがあります。
- 次のように、ID 列、説明列、およびカテゴリの親 ID 列を持つカテゴリ テーブル:
私のアプリケーションでは、顧客は 0 個以上のカテゴリを持つことができました。顧客が持っているカテゴリの一部またはすべてを表示したいと考えています。たとえば、すべてのカテゴリを表示することを選択した場合、次のテーブルが必要です。
タイトルとクレジット カードのみなど、特定のカテゴリも表示できるはずです。 p>私はLEFT JOINでそれをやろうとしました。
しかし、行が重複しているため、役に立ちませんでした。
sql - SQL:集合論によるレコードのマッチング
私は最近、複雑なSQLクエリに苦労しています。
私は次のテーブルを持っています:
これは基本的に、ユーザーが各プロパティの値を選択するプロジェクトです。各プロパティは、単一値または複数値にすることができます。たとえば、ユーザーはプロパティ{ID = 1、title = Hobbies}に複数の値を選択できますが、プロパティ{ID = 2、title=HairColor}には単一の値を選択する必要があります。
別のテーブルを使用する-[dbo]。[Search_Property_Values_User_Linkage]-{UserID、PropertyID、valueID}必要なプロパティを選択しており、一致するユーザーを見つけることを期待しています。ただし、HairColorなどの値(または複数値)を選択していない場合は、すべてのユーザーを取得する必要があります(HairColorでフィルター処理したくないため)。
これまでのところ簡単ですが、私が解決できないと思われる問題は、複数の値が先にあるか、ユーザー定義の値がない場合です。たとえば、HairColor =BrownとHobbiesIN(basketball、football)のすべてのユーザーが必要です。
いずれかの用語に一致するすべてのユーザー(および、フィルターを選択していないため、他のプロパティを持つユーザー)を取得できますが、条件に完全に一致するユーザーのみを取得することはできません。
コードを言葉にするために、次のようなすべてのユーザーが必要だとしましょう。
- 私が選択したすべてのプロパティ値に一致する
- EyesColorなどの他のプロパティがある場合もありますが、フィルタリング値を選択していないため、それらも取得される可能性があります。
- プロパティがまったく設定されていない可能性がありますが、このプロパティの値を選択していないため、有効です。
- 私が選択した1つのプロパティだけでなく、選択したすべてのプロパティをグループとして一致させます(バスケットボールが好きで、HairColorに「赤」が付いているユーザーは無効です!
選択されていない値をビット単位で「補完」する仮想テーブルを作成するソリューションに出くわしました。たとえば(実際のコードではありません):
基本的に、[Property] WITH [User]をCROSS-
JOINし、残りのテーブルをLEFT-OUTER-JOINして、選択に一致させます。
すべてのユーザーとそのプロパティへの一致を取得します。茶色の髪のユーザー、バスケットボール/サッカーが好きなユーザーはいますが、両方に一致するユーザー(そしてもちろん私が他の未定義のプロパティ)を持っているユーザーはいないので、これでは十分ではありません。
これは重いですが、問題を分析するためにこれまでに得たものです。
助けていただければ幸いです。10年前の数学の授業で何かが足りないと思います...
編集:db pic:http: //i51.tinypic.com/2n1cfwg.png
sql - クロスジョイン!SQL Server では、実際には行の約 3 分の 1 しか必要ありませんか?
わかりましたので、これについて正しい方法で行っているかどうかはわかりません。しかし、私のシナリオは、ストアド プロシージャが必要な入力のすべての可能な組み合わせを使用してテストしたいというものです。
次のように、2 つのパラメーターを受け取るストアド プロシージャがあるとします。
私の場合、ProfileID は人のようなものを意味し、RoleID はシステムの役割のようなものを意味します。私はここで意図的に少し一般的になっています。ポイントは、私は約 60,000 人の定義された人々と、約 600 の定義された役割を持っているということです。
残念ながら、私がテストしているシステムは非常に複雑で、非常に複雑であり、この手順をそのペースで実行する必要があります。
わかりました、これまでのところ私と一緒ですか?うまくいけば、そうです。この sql をチェックして、最終的にストアド プロシージャに渡すデータを生成します。
これは実際には非常に優れていますが、問題は実行に時間がかかることです。率直に言って、これら 2 つの値のすべての順列は必要ありません。
だから私は結果セットを次のように制限しようとしました:
しかし、おっと!これにより最終結果が制限されるため、最終的には、(一番上の動詞に何を渡すかによって) ほぼ 2 から 3 の役割であり、各人の ProfileID を持つ結果しか得られません。
私が望んでいるのは、私の目標は、私が持っているすべての役割 (約 600) の結果を得ることです。
それで、私が求めていることは理にかなっていますか?
join - Mondrian / OLAP は、大きなディメンション/セットを結合するための間違ったツールですか?
概要: 私が見た MDX 結合の例のほとんどは、それぞれ数十または数百の項目を持つ、比較的小さなセットの結合を伴います。しかし、それぞれ数千または数万のアイテムを持つセットを結合する (特に「空でない結合」) ことも試してみたいと思っていますが、今のところうまく機能していません。これを機能させることができるかどうか、または Mondrian/OLAP 以外のものを使用することを検討する必要があるかどうか疑問に思っています。
具体的には、会社 (n=7000) とクライアント (n=27000) の間の相互作用を記録するキューブがあります。現在、会社とクライアントはどちらも完全にフラットな階層です。すべてのレベルと個々の会社のレベルがあり、その間に他のレベルはありません。中央のファクト テーブルと、会社用とクライアント用の個別のディメンション テーブルがあります。
私のユーザーは少なくとも、会社とクライアントの間のすべての空ではない対話を集約して、これらの行に沿って要約レポートを取得したいと考えているようです。
しかし、このクエリとそのバリエーションは、テスト用の Mondrian セットアップでは機能しません。(2 GB の Java ヒープで) OutOfMemoryException が発生するか、Java が mondrian.rolap.RolapResult$AxisMember.mergeTuple(TupleCursor) で信じられないほど長い時間を費やしているようです。(それが役に立てば、より完全なスタック トレースを提供できます。) 「信じられないほど長い」とは、Java が何時間も何時間もクエリを実行し続けることを意味します。
概念的には、次の行に沿って SQL クエリを実行するだけである程度効率的に実行できるため、最初は上記のクエリが正常に実行されると予想していました。
(実際、MySql でこのようなものを直接実行すると、実行に 15 秒もかかりません。)
しかし、デバッグ ログから見ると、Mondrian はこの最適化を試みていないようです。代わりに、内部で結合を行っているように見え、最終的には特に遅くなります。mondrian.properties で mondrian.native.crossjoin.enable=true を設定しましたが、これは Mondrian が「ネイティブにする」ことができる結合タイプの 1 つではないようです。( mondrian.native.unsupported.alert=ERROR をオンにすると、対応する例外が発生します。)
ユーザーがそのような大きな次元/セットで結合を試行するのを防ぐ必要があるのか 、それともMondrianがここで探しているツールではないのか 疑問に思っています. しかし、多分私は何か間違ったことをしているのです。
sql - CROSS JOIN フィルター
クエリ用にレコードを「製造」する必要がありますが、同時に「ルックアップ」テーブルから返される値のリストを制限します。
インライン ビューを使用せずに CROSS JOIN を「フィルター」する方法はありますか?
この構文は期待どおりに機能します (望ましい結果が得られます)。
残念ながら、このアプローチを使用する場合、ネイティブの「Visual Linking Expert」ではなく、Crystal Reports で Command オブジェクトを使用する必要があります。コマンドオブジェクトは私を苛立たせます。
WHERE 句にフィルターを追加すると、この状況では望ましくない等結合になります。
sql - SQL - 複数のテーブルを介したクエリ選択結合
状況は次のとおりです。
empr
ID ( . ) を持つ人を検索し、これが参照する請求書 ( . empr_cb
) を支払います。
これは と同じです。
これは を指します。
これは と同じです。
これにより、Person ID ( . )が得られますtransactions
montant
transactions
compte_id
comptes
id_compte
comptes
proprio.id
empr
id_empr
empr
empr_cb
私はこれを試しましたが、設定する結合がわかりません(クロス結合?):
結合を配置する方法はありますか?
mysql - MySQL は、テーブル 1 と同じテーブル 2 から選択します
私は2つのテーブルを持っています
"雇用者":
"位置":
雇用者名、役職名、賃金、関連職名、関連ポジションの賃金、関連ポジションの雇用者を含む表示テーブルが必要です
今、私はクエリを持っています:
次のリクエストは機能しませんが、必要なものがわかります:
sql - 一時テーブルでの SQL クロス結合の結果が遅い
次のコードを SQL クエリに追加しました: (メモ カット ダウン バージョン)
実行時間は約 10 分から約 1 時間になりました。これがなぜなのかについて何か提案はありますか? -cumulative' クエリごと。