Avatar billede mikse Nybegynder
30. juli 2003 - 00:08 Der er 7 kommentarer og
1 løsning

count og join af 3 tabeller

Jeg er ved at forsøge at udtrække noget statistik fra en serviceordredatabase (MSSQL 2000)
jeg har 3 tabeller:

1:            2:          3:
SY240100 *    SC160100 *  SC010100 *
SY24001      SC16001    SC01001
SY24002      SC16002    SC01002
SY24003      SC16006    SC01037

Når jeg udfører nedenstående select statement kommer der et ok resultat men....
             
SELECT distinct
    SC010100."SC01001", SC010100."SC01002", SC010100."SC01037",
    SC160100."SC16001", SC160100."SC16002", SC16006, SY240100."SY24003"
FROM
    SC010100
INNER JOIN
    SC160100 ON SC010100.SC01001 = SC160100.SC16001 inner join SY240100 on SC160100.SC16006 = SY240100.SY24002
WHERE
    SC160100."SC16003" >= {ts '2003-01-01 00:00:00.00'} AND
    SC160100."SC16003" <= {ts '2003-07-29 00:00:00.00'} AND
    SC160100."SC16001" = '149-1071IX' and
    SC160100."SC16006" >= '0000' AND
    SC160100."SC16006" <= 'X001' AND
    SC160100."SC16005" <= 'D' and
    SY240100."SY24001" = 'GB'
ORDER BY
    SC010100."SC01037" ASC,
    SC160100."SC16001" ASC,
    SC160100."SC16006" ASC

RESULTAT:
SC16002 SC16006 SY24003
8820    001    Ingen fejl fundet
8826    001    Ingen fejl fundet
8822    002    Kunde afmeldt opkald
5676    107    Seddel og mønt udbetalere
8825    107    Seddel og mønt udbetalere

Jeg kunne godt tænke mig istedet at få noget noget der lignede dette, altså hvor fejlkoden (SC16006) blev talt op istedet.
men jeg er blevet i tvivl om det kan lade sig gøre med en SQL statement.

Antal:  Fejlkode: (SC16006)    Fejltekst: (SY24003)   
1        002                    Kunde afmeldt opkald
2        001                    Ingen fejl fundet
2        107                    Seddel og mønt udbetalere

Håber ikke at det er helt volapyk.
Avatar billede arne_v Ekspert
30. juli 2003 - 07:42 #1
Nu er jeg ikke helt sikker på at jeg forstår din tabel struktur.

Men grundliggende skal:

SELECT fejlkode, fejl FROM ... WHERE ....

erstattes af:

SELECT COUNT(*), fejlkode, fejl FROM ... WHERE ... GROUP BY fejlkode, fejl
Avatar billede mikse Nybegynder
30. juli 2003 - 09:51 #2
Nu er problemet jo at jeg først skal joine flere tabeller, men jeg tror at jeg er kommet til en løsning, fandt nemlig noget omkring en select statement indeni en select statement, så min query kom til at se således ud:



select count(*) as antal, fejlkode, fejltekst from (

SELECT distinct
    SC010100."SC01001", SC010100."SC01002", SC010100."SC01037",
    SC160100."SC16001", SC160100."SC16002", SC16006 as fejlkode, SY240100."SY24003" as fejltekst
FROM
    SC010100
INNER JOIN
    SC160100 ON SC010100.SC01001 = SC160100.SC16001 inner join SY240100 on SC160100.SC16006 = SY240100.SY24002
WHERE
    SC160100."SC16003" >= {ts '2003-01-01 00:00:00.00'} AND
    SC160100."SC16003" <= {ts '2003-07-29 00:00:00.00'} AND
    SC160100."SC16001" = '149-1071IX' and
    SC160100."SC16006" >= '0000' AND
    SC160100."SC16006" <= 'X001' AND
    SC160100."SC16005" <= 'D' and
    SY240100."SY24001" = 'GB'
)

as antalfejl
group by fejlkode,fejltekst
order by fejlkode


dette giver mig dette svar:
Antal:  Fejlkode: Fejltekst:
3    001      Ingen fejl fundet
1    002      Kunde afmeldt opkald
1    100      Kabinet, cover, stand

Og det er nøjagtig hvad jeg skal bruge :-))))

Nu skal du jo bare have lidt point, hvad med halvdelen??
1    106      Kassette og sækkeholdere
6    107      Seddel og mønt udbetalere
1    108      Tæller enhed
6    200      Printer system
Avatar billede arne_v Ekspert
30. juli 2003 - 09:56 #3
Helt fint.
Avatar billede mikse Nybegynder
30. juli 2003 - 10:11 #4
Hereby
Avatar billede mikse Nybegynder
30. juli 2003 - 10:12 #5
Hmmm, det er jeg sq ikke helt god til, men put, jeg er dælme glad for at det virker :-)
Avatar billede arne_v Ekspert
30. juli 2003 - 10:17 #6
Vil du have de 30 tilbage ?
Avatar billede mikse Nybegynder
30. juli 2003 - 10:21 #7
Næææ, behold du bare dem, det er ok.
Avatar billede arne_v Ekspert
30. juli 2003 - 10:51 #8
Jeg takker.
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