問題タブ [inline-view]

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 投票する
5 に答える
523 参照

sql - 「インラインビュー」を関連付けることができればいいのに

私は患者テーブルを持っています:

私はPatientMeasurementテーブルを持っています(0から多数):

次のような結果セットを作成しようとしています。

基本的に、測定 A の値が少なくとも 1 つ、測定 B の値が 1 つある場合、患者の分子は 1 になります。この例では、患者 1 には 3 つの A 測定値と 2 つの B 測定値があるため、分子は 1 です。 2 には 2 つの A 測定値がありますが、B 測定値がないため、分子は 0 です。患者には A 測定値も B 測定値もないため、分子は 0 です。

これまでの私のクエリは次のとおりです。

これは、相関する日付制限 (Recorded < dateadd(hh, 12, Admitted) を含めない限り、期待どおりに機能します。残念ながら、この方法で「インライン ビュー」を相関させることは、構文的に有効ではありません。

これにより、SQLを次のように書き直す必要がありました。

私の質問:これを行うためのより良い、より効率的な方法はありますか?

御時間ありがとうございます。

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

sql - 最も早い時間でユーザーを選択し、他のデータと結合する

user特定の条件が満たされている(フィールドに基づいて)最も早い行からフィールドを選択しようとしているOracleデータベースがあり、timeその方法がわかりません。これが私のクエリの要点です:

私の問題は、WHERE条件に一致するuser最も早い値を持つ行から値のみをSELECTして取得する方法がわからないことです。SELECTで集計関数を実行していないため、time使用できないと思います。HAVING「最も早いtime値」の条件は、フィールドの選択にのみuser適用する必要があります。つまり、フィールドのすべての値に対して選択する必要がidあります。valuetime

上記のSELECTステートメントを保持してから、必要な特定のものを取得する別のSELECTステートメントとJOINできると考えてuserいました。

ただし、これはuser全体に対して1つの値しか取得しないため、最初のクエリでSELECTされたuser値ごとに個別の値が必要です。他のクエリのフィールドでクエリidを制限するにはどうすればよいですか?これは私が欲しいものを手に入れるための正しいアプローチでさえありますか?SELECT userid

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

java - 一時テーブルを作成する代わりに、OracleインラインビューをJavaステートメント全体で使用できますか

同じインライン ビューで 3 つの個別の SQL を実行する Java プログラムがあります。- Java プログラムにはスキーマ オブジェクトを作成する権限がないため、plsql に委譲する必要があるため、一時テーブル ソリューションを回避しようとしています。PS:オラクル10g

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

sql - With句から行を返す

値を再実行する関数を作成しようとしています。

私の関数には、次のスクリプトがあります。

戻り値は次のようになります。

http://img59.imageshack.us/img59/6733/tablei.gif

今、私はrow 3それが1行RightsMUTを持っているcozeを返したいです

どうすればこれを行うことができますか?私は2でそれをやろうとしましたWithが、oracleはまだ2をサポートしていません。

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

oracle - 基準APIでインラインビューを使用できますか?

NHibernateは基準を使用したインラインビューをサポートしていますか?Googleは関連する結果を返さないようです。これが、できれば基準を使用して変換する必要があるクエリです。

where句ですでにすべてが変換されています。その部分は問題ありませんでした。これは次のようなものに変換されます。

Lambda基準拡張を使用していることに注意してください。または、追加のDtoを作成して、集計関数のないすべての列を選択し、Linqを使用してカウント/合計/最大/カウントを区別できると思います。

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

sql - すべてのビューを結合できません

Oracle RDMS は、set 演算子を含むビューをマージできないことを知っています。それはなぜなのか知りたいです。

たとえば、次のようになります。

これに変換できます:

これら 2 つのクエリは同等ですよね? [編集]

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

sql - 結合時に区別して順序付けを使用する(PLSQL)

いくつかのテーブルに結合を記述し、2つのレベルの順序付けを使用してデータを順序付けました。そのうちの1つは、1つのテーブルの主キーです。

ここで、このデータを並べ替えて、インラインビューとDISTINCT句を使用して、データから重複を除外したいと思います。これが、私が行き詰まっていないところです。

データを並べ替えるか、区別することができるようですが、両方を同時に行うことはできません。これを回避する方法はありますか、それとも不確定性原理に相当するSQLに出くわしましたか?

このコードはソートされたデータを返しますが、重複しています

このコードは重複を削除しますが、順序を失います...

外側の選択の最後に「ORDERBYada_id」を含めようとすると、「ORA-01791:選択された式ではありません」というエラーメッセージが表示され、腹立たしくなります。

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

sql - Oracle インライン ビューで列を参照する際の問題

マスター、子、孫として3つのテーブルがあります。このような単純化されたもの:

より大きなクエリでは、これら 3 つのテーブルを次のようなインライン ビューに結合します。

私の問題は、where 句で参照する time_stamp を指定しなかったことです。驚いたことに、エラーは発生しませんでしたが、代わりにデータベースは列 table1.time_stamp を使用することにしました! 私の最初の質問は、「ORA-00918: 列があいまいに定義されています」というメッセージが表示されない理由があるのですか? 問題を見つけるのに少し時間がかかりましたが、見つけたら、インラインビューの選択で、この場合tbl3.time_stampで興味のある列を指定することで簡単に修正できました。テスト時に、列リストに time_stamp を 2 つ含めると、予想どおり ORA-00918 が発生することがわかりました。

助けてください。ここで何か不足していますか、それとも Oracle 11 のインライン ビューに問題 (バグまたは機能) がありますか?

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

sql - 列の最大値を使用してOracle SQLテーブルから行をフィルタリングします

私はOracle SQLを学んでおり、次のようなテーブルがあります。

上の表は、クエリで作成したインライン ビューを表しています。ご覧のとおり、テーブルは名前と国でグループ化され、いくつかのカウントを行っています。カウント列を使用してテーブルをフィルタリングし、次のようにします。

ご覧のとおり、名前ごとに、カウントに基づいて国を選択したいと考えています。

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

sql - Oracle / SQLのメインクエリでテーブルとの結合を実行しながら、インラインビューを使用して上位nを取得する方法は?

これは非常に単純なクエリのように見えますが、明らかな何かが欠けているに違いありません。このシナリオはかなり一般的だと思います。

製品を格納するテーブルと、トランザクションを格納する別のテーブルがあります。transaction テーブルには、セールスマンに関する情報が含まれています。ここで、すべての製品をリストし、この製品を最後に販売したセールスマンの ID を含むレポートを作成する必要があります。

次のような簡単なクエリを試しました。

select id, product_name, (select salesman_id from (select salesman_id from trans where product_id = a.id order by trans_date desc) where rownum = 1) salesman_id from products a

このクエリにより、a.id で無効な識別子が返されました。

ネットを検索した後、LATERAL句を追加しようとしました。次のように

select id, product_name, salesman_id from products a, LATERAL(select salesman_id from (select salesman_id from trans where product_id = a.id order by trans_date desc) where rownum = 1)

しかし、このクエリでは不完全な SQL ステートメントが返されます。

単一のクエリでこれを達成する簡単な方法はありますか?