6

SQLクエリを完了しようとしていますが、今は問題が発生しています。誰かが私を助けてくれるかもしれません。

短いバージョンの表は次のとおりです (フランス語の名前で申し訳ありません)。

レキシク

ID  
terme_fr  
definition_fr    

ドメーヌデュテルメ

lexique_id  
domaine_id  

ドメーヌ

ID  
domaine_fr

したがって、Lexique テーブル内の 1 つの要素に複数の Domaine を含めることができ、1 つの Domaine を複数の Lexique 要素に使用できます。DomaineDuTerme テーブルは、これらの多対多の関係を含む中間体として存在します。

Lexique 要素ごとにレコードセットの 1 行に domaine_fr を再グループ化するクエリを作成したいと思います。現在、要求は中間テーブルで見つかったすべての関係のレコードを返します。この中間テーブルは、Lexique 要素が必要に応じてフィルターを適用するドメインを知る必要があります。

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

SELECT   
  Lex.terme_fr,   
  Lex.definition_fr,   
  Dom.domaine_fr  
FROM 
  ((Lexique AS Lex   
   LEFT JOIN   
     DomaineDuTerme AS Ddt ON Lex.ID = Ddt.lexique_id)   
   LEFT JOIN     
     Domaine AS Dom ON Ddt.domaine_id = Dom.ID)    
WHERE Lex.terme_fr='test'  `

このリクエストでは、'test' 要素に複数の Domaines 関連付けがある場合、複数のレコードが結果として取得されます。複数の関連付けが Dom.domaine_fr フィールドにリストされる単一のレコードを取得したいと思います。

これは可能ですか?DISTINCT と ORDER BY、および JOIN のすべてのバージョンを試してみましたが、それでもすべての関連付けが取得されます。

別のクエリで、またはレコードセットを取得した後のコードで実行できることはわかっていますが、SQL を介した方法があると確信しています。これが役立つ場合は、データベース スキーマを再編成することにもオープンです。

どうもありがとう !

4

1 に答える 1