-1

私は3つのエンティティを持っています:

質問

  • ID
  • 質問
  • ...
  • 選択リスト (ChoiceList で x-1)

ChoiceList

  • ID
  • 名前
  • 選択肢 (1-x と選択肢の値)

選択値

  • ID
  • 価値

各「質問」には、添付の「ChoiceList」がある場合とない場合があります。各選択リストには、多くの「ChoiceValues」が添付されている場合があります。質問のデータベースは膨大で、各選択肢リストには多くの選択肢があるため、Web サイトの速度が大幅に低下しました。

データベースクエリを最適化するには、すべての質問に対して単一のクエリを作成し、必要なすべての選択リストとその選択肢を結果に含めることは理にかなっています。したがって、それ以上クエリを実行する必要はありません。

SELECT q, cl, cc FROM Question q JOIN q.choicelist cl JOIN cl.choices cc

私がこれを行うと、質問に選択リストがない場合、このクエリはそれを返さないように、選択リストを持つ質問のみが結合されるという印象を受けます (したがって、関連付けが null でない場合)。

すべての質問が返され、質問に選択リストが関連付けられている場合は、それらも返されるように、この DQL を調整する方法を知りたいです。

4

1 に答える 1

1

LEFT JOIN を実行する必要があります。

SELECT q, cl, cc FROM Question q LEFT JOIN q.choicelist cl JOIN cl.choices cc
于 2013-09-02T13:52:53.407 に答える