私はこれらの3つのテーブルを持っています。
UserTrackRecord -> id, profile_id(fk), object_profile_id(int)
Profile and -> id
ProfilePersonalInfo-> id, profile_id(fk), firstname, lastname
profile_id と object_profile_id は、誰かが私にフレンドシップのリクエストを送信したときに、object_profile_id が私のプロファイル ID であり、外部キーが送信者のプロファイル ID であることを目的としています。
1 つのプロファイルには多くのユーザー実績があります。1 つのプロファイルには 1 つの profilepersonalinfo があります (profilepersonalinfo と同様に、basicinfo と backgroundinfo で、profileid を fk として持つ 2 つのテーブルがあります)。
私は自分のプロファイル id(objecct_profile_id) を 1 としています。ここで、要求送信者の名、姓、および他の 2 つのテーブルからの情報も取得したいと考えています。
私が作ったSQLクエリは
select utr.profile_profile_id, ppi.dob, ppi.first_name, ppi.last_name, "
+ "pbi.religion, pbi.city_birth, pbi.country_birth from "
+ "user_track_record utr "
+ "inner join profile_personnel_info ppi on ppi.profile_profile_id=utr.profile_profile_id "
+ "inner join profile_background_info pbi on pbi.profile_profile_id=utr.profile_profile_id "
+ "where utr.object_profile_id=1
これは正常に機能しています。
hqlでは、クエリをせいぜい単純化すると、次のようになりました
Select * from UserTrackRecord utr inner join ProfilePersonalInfo ppi
しかし、idは機能せず、外部結合または完全結合の後にパス式クエリ例外が続く必要があります。
以前に同じ質問を投稿しましたが、誰かが熱心に投票しました:(そのため、さらに研究開発を行いましたが、解決策が見つかりませんでした.