[MSSQL] Query probleem met INNER JOIN

Pagina: 1
Acties:

  • JasperE
  • Registratie: December 2003
  • Laatst online: 27-01 23:07
Ik heb de volgende query:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT DISTINCT TAlias1.WPDEPA, TAlias1.WPWORK, TAlias1.WPNUMBER, TAlias2.WOBATCH, TAlias2.WOPART, TAlias1.WPSTART, 
                TAlias2.WODELDATE, TAlias2.WOORGQUANT, TAlias2.WOSTATUS, TAlias2.WODESCR, TAlias4.CUABC

FROM    start.WORKPLAN TAlias1, 
        start.WORHEAD TAlias2, 
        start.MASTERPL TAlias3, 
        start.CUST TAlias4

WHERE   TAlias1.WPNUMBER = TAlias2.WONUMBER

AND     TAlias3.MPPART = TAlias2.WOPART

AND     TAlias4.CUNUMBER = TAlias3.MPCUST

ORDER BY TAlias1.WPSTART


Deze query doet zijn werk prima, met een uitzondering. Wanneer er geen matchende rij gevonden kan worden voor een van de twee AND condities, worden de resultaten uit de eerste WHERE conditie ook niet opgenomen. (Vanzelfsprekend vanwege de AND conditie die een match vereist)
Hoe kan ik deze rijen zonder match in TAlias3 & TAlias4 alsnog laten opnemen in de resultaten?
Misschien ligt de oplossing heel erg voor de hand maar ik zie het gewoon niet :(


Edit:
Zo kan de bovenstaande query ook geschreven worden:
code:
1
2
3
4
5
6
7
8
SELECT DISTINCT 
                      TAlias1.WPDEPA, TAlias1.WPWORK, TAlias1.WPNUMBER, TAlias2.WOBATCH, TAlias2.WOPART, TAlias1.WPSTART, TAlias2.WODELDATE, 
                      TAlias2.WOORGQUANT, TAlias2.WOSTATUS, TAlias2.WODESCR, TAlias4.CUABC
FROM         start.WORKPLAN AS TAlias1 INNER JOIN
                      start.WORHEAD AS TAlias2 ON TAlias1.WPNUMBER = TAlias2.WONUMBER INNER JOIN
                      start.MASTERPL AS TAlias3 ON TAlias2.WOPART = TAlias3.MPPART INNER JOIN
                      start.CUST AS TAlias4 ON TAlias3.MPCUST = TAlias4.CUNUMBER
ORDER BY TAlias1.WPSTART

[ Voor 34% gewijzigd door JasperE op 13-04-2006 11:01 ]


  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 27-08-2021

CaptBiele

No Worries!

Kun je niet gewoon OR gebruiken ipv AND? (of ligt het niet zo simpel)

Het is trouwens ook handig om de versie van SQL erbij te vermelden, en volgens mij hoort dit topic bij de buren.

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 18:11
Een LEFT JOIN lijkt me hier wel voor de hand liggen.

Roomba E5 te koop


  • JasperE
  • Registratie: December 2003
  • Laatst online: 27-01 23:07
Nee, OR zou dezelfde rij dan 2x opleveren. :/
Het moet misschien iets zijn met IF EXISTS voor de JOINS?

Het betreft een Microsoft SQL Server v8.0.760

  • JasperE
  • Registratie: December 2003
  • Laatst online: 27-01 23:07
sig69 schreef op donderdag 13 april 2006 @ 11:11:
Een LEFT JOIN lijkt me hier wel voor de hand liggen.
Jep 8)7

Opgelost

Edit: Ik zag de oplossing aanvankelijk dus niet omdat ik niet met de "INNER JOIN" syntax maar met de "WHERE tabel1.kolom = tabel2.kolom" syntax werkte.

[ Voor 34% gewijzigd door JasperE op 13-04-2006 11:29 ]

Pagina: 1