0

JPA、Hibernate、MySQL を使用しています。

UploadRating という 2 つのテーブルがあります。各アップロードは、UploadRating テーブル、つまり OneToMany で複数の評価を持つことができます。UploadRating には、アップロードを評価したユーザーを定義する属性 user があります。

ここで、ユーザーの UploadRating が存在しないすべてのアップロードを知りたいと思います。クエリは次のようなものです:

from Upload up,  UploadRating  ur where ur.upload=up and ur.user != :usrId 

上記のクエリに欠陥があることはわかっています。この場合、外部結合を使用する必要があります。誰かが私に質問を手伝ってくれませんか。

4

1 に答える 1

0

SQLでは、次を使用できます。

select 
  * 
from 
  Upload up 
where 
  not exists (select * from UploadRating ur where ur.upload_id=up.id and ur.user = :usrId)

upload_idそれが各アップロードの一意のIDを含むアップロード評価列であると仮定します。

結合を使用する同等のSQLは、次のようになります。

select 
  * 
from 
  Upload up 
  left outer join UploadRating ur on ur.upload_id=up.id
where 
  (ur.user <> :usrId) or (ur.user is null)
于 2012-06-08T18:03:42.927 に答える