[HQL] un JOIN sans with

un JOIN sans with [HQL] - SQL/NoSQL - Programmation

Marsh Posté le 23-06-2008 à 18:56:08    

Bonjour,
Je dois faire un requête en HQL, et je ne comprend pas pourquoi elle ne me ramène rien... alors je m'en remet à vous !
 
Voici l'idée
soit une table A qui pointe sur une table B une table C et une table D
on doit faire une requête sur D, pas d'autre choix, car en fait il y a plein d'autre tables et la requête porte sur plein de ces tables.
 

Code :
  1. SELECT DISTINCT d
  2. FROM D d
  3. LEFT OUTER JOIN d.a a_join
  4. LEFT OUTER JOIN a_join.b b
  5. WHERE  d IN (SELECT DISTINCT abis.d FROM A abis WHERE :variable0 > abis.tata) 
  6.   AND  b.id = :variable1 and b.toto = 1

 
 
 
Je ne peux pas utiliser IN ELEMENTS, car les tables D et B ne sont pas reliés directement
 
Je sais que je pourrais faire avec WITH, mais comme je dois générer cette requête avec plein d'autre conditions, ça m'arrangerait de pouvoir la faire avec juste une clause WHERE variable :p
 
Cette requête fonctionne, mais elle ne me ramène rien, alors que quand je vérifie directement en SQL sur la base, il devrait y avoir des réponses.
 
La question est donc, dans les étapes d'évaluation de cette requête, que ce passe t'il, où est ce que ça cloche ?
Car si je m'imagine bien ce qui se passe derrière, là, elle crée une table temporaire en combinant les info des JOIN, puis sur cette table, elle applique le WHERE. Avec un WITH, elle appliquerait directement le filtre au moment de cette table temporaire. Donc mise à part des perfs différentes, je ne vois pas pourquoi ce que ça me ramène est également différent !
Je vous remercie de vos suggestions ! :)

Reply

Marsh Posté le 23-06-2008 à 18:56:08   

Reply

Marsh Posté le 01-07-2008 à 19:02:40    

c'est normal que tu n'aies pas de "on" dans tes join ?
 
sorti de ça, ta requête m'a l'air très étrange, je suppose que HQL est un sgbd absolument pas standard (à la première ligne tu devrais en toute logique avoir un statement error en SQL). du coup je peux pas t'aider, je pige meme pas ce que tu tente de faire :D

Reply

Marsh Posté le 02-07-2008 à 10:50:25    

C'est quand même gentil de participer ;)
 
Si c'est standard, mais objet... du coup, on peut faire des select sur des objets, pas sur des en-tête de colonne, et d'autre part,  il y a des fichiers de maping qui explique comment les tables sont dépendantes, d'où l'absence d'attribut ON.
 
Ceci dit, je ne vois toujours pas pourquoi elle ne me ramène rien...

Reply

Marsh Posté le 02-07-2008 à 11:20:55    

j'imagine que les fichiers de mapping justement son foireux. tu dois avoir un truc qui cloche au moment où il tente de faire les jointures.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed