Avatar billede fhansen Praktikant
28. februar 2008 - 19:31 Der er 4 kommentarer og
1 løsning

sql sortering

Hejsan.

Jeg bruger nedenstående kode, som jeg har fået hjælp til af hrc og arne v, til at finde en klients relationer, men nu er mit problem, at hvis der er mere end boatreg til en client, bliver der oprettet en post for hver boatreg, jeg ønsker kun at se den senest.
Er dette muligt med et sql kald, eller skal jeg vælge en master/detail løsning.
Jeg bruger de fundne data i et treeview.

with CheckClient do begin
      SQL.Text := 'SELECT P.Client, P.Berth, P.Width, P.Length, 
      P.Depth, R.Boat, R.Name, B.Width AS Bwidth, B.Length AS
      Blength, F.Fdate, F.Tdate '+
                  '  FROM berth P'+
                  '  LEFT JOIN boatreg R on (R.Client = P.Client
                    AND R.Berth = P.Berth)'+
                  '  LEFT JOIN boats B on (B.Boat = R.Boat)'+
                  '  LEFT JOIN frental F on (F.Berth = P.Berth)'+
                  '  WHERE (P.Client = :Client)'+
                  '  ORDER BY P.Berth';
      with CheckClient.ParamByName('Client') do
      begin
        DataType := ftInteger;
        ParamType := ptInput;
        Value := DataM.ClientSql.FieldByName('Nummer').AsInteger;
      end;
      Active := True;

håber ovenstånde er forståligt.

Finn
Avatar billede martinlind Nybegynder
29. februar 2008 - 21:04 #1
WHERE (P.Client = :Client) and ( F.Tdate = max(F.Tdate) )

du udvider din where clause nogenlunde sådan, kan ikke helt huske syntaksen for MAX men det kan du google "SQL MAX"
Avatar billede fhansen Praktikant
29. februar 2008 - 23:16 #2
Ligger du et svar
Avatar billede martinlind Nybegynder
01. marts 2008 - 00:39 #3
jep
Avatar billede fhansen Praktikant
01. marts 2008 - 12:48 #4
Damn der var jeg lidt hurtigt, koden virker ustabil, jeg har ikke kunnet finde nogen forklaring på hvorfor den ikke finder alle poster.
Kan MAX() og GROUP BY 'ødeligge' LEFT JOIN ?
Avatar billede martinlind Nybegynder
01. marts 2008 - 17:52 #5
Ja, du skal være præcis med dato'en, det kan måske være noget med tim/min

mener ikke det ødelægger nogen join, den har sin egen where clause det er det du skriver i : on (where clause for din join)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester