1

誰かがこれを手伝ってくれますか、私は2つのテーブルを持っています

Financeaccountcurrencymappingおよびownedac​​count。

フィールドlegalEntity_idが何かであるfinanceaccountcurrencymappingを選択したいと思います。

これが私がこれまでに持っているものです。

SELECT 
FROM financeaccountcurrencymapping 
WHERE ownedAccount_id EXISTS IN (
                SELECT id 
                FROM ownedaccount 
                WHERE legalEntity_id = ??);

表のフィールドは次のとおりです。

'financeaccountcurrencymapping'

  • id
  • moneyCurrency
  • accountForCash_id
  • ownedAccount_id

「ownedac​​count」

  • id
  • 名前
  • LegalEntity_id
  • AssetOrLiability
  • AssetType
  • デポジトリタイプ
  • 責任タイプ
  • multipleCurrency
  • 通貨
  • 説明
4

4 に答える 4

4

この場合、EXISTSは使用しません。INだけでも機能します。

SELECT 
FROM financeaccountcurrencymapping 
WHERE ownedAccount_id IN (SELECT id FROM ownedaccount WHERE legalEntity_id = ??);
于 2012-11-26T17:11:54.033 に答える
1
SELECT legalEntity_id
FROM financeaccountcurrencymapping 
WHERE ownedAccount_id IN (
                SELECT id 
                FROM ownedaccount 
                WHERE legalEntity_id = ??);
于 2012-11-26T17:13:11.657 に答える
1

あなたは元のクエリが本当に近いです。EXISTS次のように、を削除する必要があります。

SELECT *
FROM financeaccountcurrencymapping 
WHERE ownedAccount_id IN (
                SELECT id 
                FROM ownedaccount 
                WHERE legalEntity_id = ??);

JOINまたは、同じ効果的な結果を得るために、このクエリを作成することもできます。

SELECT f.*
FROM financeaccountcurrencymapping AS f 
INNER JOIN ownedaccount AS o ON (f.id = o.ownedAccount_id) 
WHERE o.legalEntity_id = ??;
于 2012-11-26T17:14:04.463 に答える
1

本当にEXISTSを使いたい、またはその使い方の例を見たいのなら、以下がうまくいくと思います。個人的には、おそらく代わりにINを使用します。

SELECT 
FROM financeaccountcurrencymapping as f
WHERE EXISTS (SELECT id 
              FROM ownedaccount 
              WHERE f.ownedAccount_id = id AND legalEntity_id = ??);
于 2012-11-26T17:24:36.613 に答える