SQL Befehl in Java Persistence Language

Ryu20

Mitglied
Hi

ich bastel gerade an einer Web Anwednung rum, bei der ich viel mit SQL und Datenbank anbindung arbeite.

Mein Problem, ich habe einen SQL Befehl mit einem "Left Outer Join", schaffe es aber nicht den Befehl in die Java Persistence Language zu konvertieren.

SQL:
Code:
SELECT B.ID, P.* FROM category AS P LEFT OUTER JOIN category AS
B ON B.lft = (SELECT MAX( S.lft )  FROM category AS S 
WHERE P.lft > S.lft AND P.lft < S.rgt ) ORDER BY B.LFT
Mein jetziger Vorschlag der leider nicht funktioniert:

Code:
SELECT b.id, p FROM Category p LEFT OUTER JOIN Category b b.lft =
(SELECT MAX( s.lft )  FROM category s WHERE p.lft > s.lft AND
p.lft < s.rgt ) ORDER BY b.lft
Ich vermute das der Fehler hier liegt:

LEFT OUTER JOIN Category b b.lft = (SELE...

Ich hoffe jemand kann mir damit helfen. Vielen Dank schonmal

Falls niemand das weiß, vielleicht weiß jemand wie man diesen left outer join Befehl ohne join macht, also so:
SELECT B.*, P. * FROM category AS P, category AS B WHERE B.lft = ( SELECT MAX( S.lft ) FROM category AS S WHERE P.lft > S.lft AND P.lft < S.rgt ) ORDER BY B.LFT ;

leider fehlt da im MOment noch die erste Reihe wenn ich das so mache
 
Zuletzt bearbeitet:
Hmm hast du das mal durchgelesen? http://java.sun.com/javaee/5/docs/tutorial/doc/bnbtg.html

Ich hab jetzt nicht weiter geschaut aber gibt es ein LEFT OUTER JOIN? Ich habe nur ein JOIN gesehen. Und ich weiß nicht ob ein Subquery im JOIN ON erlaubt ist. Habe sowieso noch nicht den Sinn verstanden warum du im JOIN nicht die beiden Tabellen joinst sondern nen anderen Ausdruck angibst.

Versuch doch mal:
SQL:
SELECT B.ID, P.* FROM category P, category B
WHERE B.lft = (
    SELECT MAX( S.lft ) 
    FROM category S
    WHERE P.lft > S.lft AND P.lft < S.rgt
    ) 
ORDER BY B.LFT
 
  1. SELECT B.ID, P.* FROM category P, category B
  2. WHERE B.lft = (
  3. SELECT MAX( S.lft )
  4. FROM category S
  5. WHERE P.lft > S.lft AND P.lft < S.rgt
  6. )
  7. ORDER BY B.LFT
Dein Vorgeschlagener Befehl ist fast der selbe wie in meinem 1. Post am Ende.

Siehe:
----------------
Falls niemand das weiß, vielleicht weiß jemand wie man diesen left outer join Befehl ohne join macht, also so:
SELECT B.*, P. * FROM category AS P, category AS B WHERE B.lft = ( SELECT MAX( S.lft ) FROM category AS S WHERE P.lft > S.lft AND P.lft < S.rgt ) ORDER BY B.LFT ;
----------------

Da fehlt leider die 1 Reihe ber der B Null wäre.
 

Neue Beiträge

Zurück