/ / Je souhaite remplacer la «jointure externe gauche» par une autre requête de base. Comment puis-je le faire? - base de données

Je souhaite remplacer la «jointure externe gauche» par une autre requête de base. Comment puis-je le faire? - base de données

La requête ressemble à ceci:

Select t1.*, t2.balance from t1 left outer join t2 on (t1.id1 = t2.id1 and t1.id2 = t2.id2)
where t1.name = "name";

J’étais bon jusqu’à ce que j’utilise des requêtes natives, mais je dois maintenant utiliser l’implémentation JPA d’Hibernate pour toutes les requêtes. Les tables concernées ne sont en aucun cas associées.

C’est pourquoi je souhaite utiliser l’équivalent alternatif de la requête fondamentale comme jointure externe gauche.

Merci, Mahesh

Réponses:

0 pour la réponse № 1

Ma seule suggestion serait d'UNION les résultats de deux requêtes, la jointure interne, puis les lignes de t1 sans correspondance dans t2, quelque chose comme:

Select t1.*, t2.balance from t1, t2 where t1.name = "name" and t1.id1 = t2.id1 and t1.id2 = t2.id2
UNION
Select t1.*, null where t1.name = "name" and (t1.id1,t1.id2) not in (select id1, id2 from t2)
;

Je ne connais pas bien Hibernate et je ne le sais passi cela vous donne le même problème. Je suppose que dans le pire des cas, si vous ne pouvez réellement exécuter que des requêtes de base, le fait d'avoir deux requêtes indépendantes et de combiner les résultats dans du code peut suffire.