[SQL] Hulp bij JOIN

Pagina: 1
Acties:

  • Vozze
  • Registratie: December 2001
  • Laatst online: 20-08 22:02
Ik heb de volgende query:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
      Select T_DossierMain.DossierCode
  ,      T_DossierMain.CustId
  ,      T_Customer.Mnem        CustomerMnem
  ,      T_Customer.AllowType  CustomerAllowType
  ,      T_CustomerAddress.Name CustomerName
  ,      T_CustomerAddress.City
  ,      T_CustomerAddress.PostCode
  ,      T_DossierMain.OrdType
  ,      T_DossierMain.QuotNr
  ,      T_DossierMain.QuotRef
  ,      T_DossierMain.OrdNr
  ,      "Verkoopbedrag" = Convert(Numeric(24,0),Round
                          ((Select Sum(((ta.CalcQty * ta.CurrPrice / ta.SalesComputQty)
                            - ta.DiscAmount))
                            From   T_DossierDetail ta
                            Where  ta.DossierCode = T_DossierMain.DossierCode),0))
  From   T_DossierMain
  ,      T_CustomerAddress
  ,      T_Customer
  ,      T_OrderType
  ,      T_DossierDetail
  Where  T_CustomerAddress.CustId = T_DossierMain.CustId
  And    T_CustomerAddress.CustAddrCode = ''
  And    T_Customer.CustId = T_DossierMain.CustId
  And    T_OrderType.OrdType = T_DossierMain.OrdType
  And    T_DossierMain.DossierCode > ''
  And    T_DossierMain.OrdNr  != ''
  And    T_DossierDetail.DossierCode = T_DossierMain.DossierCode
  And    T_DossierDetail.DossierStatusCode >= "40"
  Order By RespEmpId Asc, T_DossierMain.OrdNr Asc


Ik heb nu bijna het goede resultaat, alleen laat ie nu meerdere ordernummers zien. Dat komt omdat onder elke order meerdere regels staan (DossierDetail). Hoe krijg ik dat ik elk ordernummer op een regel krijg en niet voor elke regel hetzelfde ordernummer. Het moet met een JOIN is mijn idee, maar ik krijg het niet voor elkaar.

"He who thinks knows evertyhing, knows nothing" - Socrates


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Volgens mij zoek je naar een group by, daarmee kun je zo te zien ook die extra select in je select list kwijtraken.

Who is John Galt?


  • Vozze
  • Registratie: December 2001
  • Laatst online: 20-08 22:02
Heb ik ook al geprobeerd, maar dan duurt het echt retelang om de query uit te voeren...

"He who thinks knows evertyhing, knows nothing" - Socrates


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Nee, een group by is hier de oplossing niet, aangezien je geen aggregated functions gebruikt.

SQL is gewoon bedoeld om gegevens op te halen, niet om de layout ervan te verzorgen. Als ij wilt dat uiteindelijk ieder Dossier slechts 1x getoond wordt, met daarna al z'n details, dan zal je dat in je applicatie moeten oplossen, en niet in sQL.

https://fgheysels.github.io/


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Of naar een Distinct, maar met die query erbij wordt je verhaal niet echt duidelijk.

Je wilt eigelijk alleen ordernummers weten, en niks meer?

Dan moet je inderdaad meerdere Query's maken..

[ Voor 19% gewijzigd door Jaspertje op 18-09-2003 14:46 ]


  • Vozze
  • Registratie: December 2001
  • Laatst online: 20-08 22:02
whoami schreef op 18 September 2003 @ 14:43:
Nee, een group by is hier de oplossing niet, aangezien je geen aggregated functions gebruikt.

SQL is gewoon bedoeld om gegevens op te halen, niet om de layout ervan te verzorgen. Als ij wilt dat uiteindelijk ieder Dossier slechts 1x getoond wordt, met daarna al z'n details, dan zal je dat in je applicatie moeten oplossen, en niet in sQL.
Dat vreesde ik dus al. Bedankt in ieder geval.

"He who thinks knows evertyhing, knows nothing" - Socrates


  • Vozze
  • Registratie: December 2001
  • Laatst online: 20-08 22:02
Jaspertje schreef op 18 September 2003 @ 14:45:
Of naar een Distinct, maar met die query erbij wordt je verhaal niet echt duidelijk.

Je wilt eigelijk alleen ordernummers weten, en niks meer?
Nee, ik wil alle zaken zien die ik heb opgenomen in de select, maar dat het uiteindelijke resultaat gegroepeerd wordt op DossierCode en dat ie niet voor elke DossierDetail weer dezelfde DossierCode laat zien, met exact dezelfde gegevens.

"He who thinks knows evertyhing, knows nothing" - Socrates


  • Vozze
  • Registratie: December 2001
  • Laatst online: 20-08 22:02
Topic kan gesloten worden. Het is al gelukt. Er was een join overbodig en bovendien kon ik de vergelijking van >= "40" ook in de SELECT bij "Verkoopbedrag" kwijt.

"He who thinks knows evertyhing, knows nothing" - Socrates


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

whoami schreef op 18 september 2003 @ 14:43:
Nee, een group by is hier de oplossing niet, aangezien je geen aggregated functions gebruikt.
Die gebruikt ie niet, maar zou ie wel moeten gebruiken.
Die extra query in de select wordt zo overbodig.

Who is John Galt?

Pagina: 1