Avatar billede gvorre Nybegynder
05. november 2014 - 19:15 Der er 3 kommentarer og
1 løsning

MS Query

Har et spørgsmål vedr. SQL, og håber nogen kan hjælpe.

I Excel har jeg oprettet forrbindelse til database i XAL via MS Query, og det virker efter hensigten med denne SQL kode:

SELECT STOCKTABLE.ITEMGROUP, STOCKTABLE.ITEMNUMBER AS 'Varenr', STOCKTABLE.ITEMNAME AS 'Beskrivelse', STOCKTABLE.COSTPRICE AS 'Kostpris', Avg(STOCKSUM.ENTEREDQTY) AS 'Antal', STOCKTABLE.DATASET, STOCKSUM.DATASET, STOCKSUM.STOCKLOC AS 'Lager', U9_FILES.FILETEXT, STOCKTABLE.DELIVERYTIME AS 'Levering', STOCKTABLE.RE_MA_BOOKING AS 'Booking', U9_FILES.REFFILEID, U9_FILES.REFRECID, U9_FILES.PATHFILENAME AS 'Billedfil', STOCKTABLE.ROWNUMBER
FROM XALDRIFT.dbo.STOCKSUM STOCKSUM, XALDRIFT.dbo.STOCKTABLE STOCKTABLE, XALDRIFT.dbo.U9_FILES U9_FILES
WHERE STOCKSUM.ITEMNUMBER = STOCKTABLE.ITEMNUMBER AND STOCKTABLE.ROWNUMBER = U9_FILES.REFRECID
GROUP BY STOCKTABLE.ITEMGROUP, STOCKTABLE.ITEMNUMBER, STOCKTABLE.ITEMNAME, STOCKTABLE.COSTPRICE, STOCKTABLE.DATASET, STOCKSUM.DATASET, STOCKSUM.STOCKLOC, U9_FILES.FILETEXT, STOCKTABLE.DELIVERYTIME, STOCKTABLE.RE_MA_BOOKING, U9_FILES.REFFILEID, U9_FILES.REFRECID, U9_FILES.PATHFILENAME, STOCKTABLE.ROWNUMBER, STOCKSUM.ENTEREDQTY
HAVING (STOCKTABLE.DATASET='DAT') AND (STOCKSUM.ENTEREDQTY>0) AND (STOCKSUM.DATASET='dat') AND (STOCKTABLE.COSTPRICE>12600) AND (STOCKTABLE.RE_MA_BOOKING=1) AND (U9_FILES.REFFILEID=11)
ORDER BY STOCKTABLE.ITEMGROUP, STOCKTABLE.ITEMNUMBER


Men jeg ønsker at databasen U9_FILES kun skal vise data når U9_FILES.FILETEXT = 'Billedfil'.

Databaserne STOCKTABLE og STOCKSUM skal vise alle data der er inden for de eksisterende kriterier.

Nogen der kan knække den?
Avatar billede Slettet bruger
05. november 2014 - 21:58 #1
Brug OUTER JOIN:

SELECT
......
FROM XALDRIFT.dbo.STOCKSUM STOCKSUM
, XALDRIFT.dbo.STOCKTABLE STOCKTABLE
LEFT OUTER JOIN XALDRIFT.dbo.U9_FILES U9_FILES
ON U9_FILES.REFRECID = STOCKTABLE.ROWNUMBER
WHERE
.......
AND U9_FILES.REFFILEID=11
AND U9_FILES.FILETEXT = 'Billedfil'
GROUP BY
.......

Det du har stående i HAVING skal stå i WHERE.
Avatar billede gvorre Nybegynder
08. november 2014 - 12:12 #2
Tak for svaret :)

Men det giver det samme resultat som tidligere når jeg indsætter
AND U9_FILES.FILETEXT = 'Billedfil'
hvorved antallet af poster ca. bliver halveret.

Jeg ønsker at alle posterne fra STOCKTABLE og STOCKSUM skal vises, men der skal kun vises data fra U9_FILES når U9_FILES.FILETEXT = 'Billedfil' ellers skal disse felter være blanke (= '').

Håber jeg udtrykker mig korrekt, men måske kan det ikke laves i SQL.
Jeg kan selvfølgelig løse det i Excel med en makro, men det ideelle vil være en løsning i SQL.
Avatar billede Slettet bruger
08. november 2014 - 14:48 #3
Prøv lige med RIGHT OUTER JOIN i stedet for LEFT.
Avatar billede gvorre Nybegynder
08. november 2014 - 19:57 #4
Det giver desværre det samme resultat.
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
Computerworld tilbyder specialiserede kurser i database-management

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