Avatar billede donnib Nybegynder
12. marts 2006 - 14:39 Der er 6 kommentarer

Group BY

Hej allesammen,
Jeg har følgende SELECT sætning :

SELECT applications.Test,
    CASE WHEN COUNT(results.Status) = 0
        THEN 'True'
        ELSE 'False'
    END Status, MAX(applications.DateTime) AS DateTime
FROM ShowRuns applications LEFT OUTER JOIN ShowRuns results
ON applications.Status = results.Status
AND results.Status = 'False'
AND results.Application='Flaw'
WHERE
applications.Application='Flaw'
GROUP BY applications.Test

I tabellen ShowRuns er der et felt mere jeg ønsker ud i min select sætning. Det er et NTEXT felt som jeg ikke kan tilføje min GROUP BY fordi den klager over den. Hvordan får jeg den kolonne med ud ?

donnib
Avatar billede kjulius Novice
12. marts 2006 - 16:33 #1
Hvilken fejlmelding får du?
Avatar billede donnib Nybegynder
12. marts 2006 - 20:58 #2
hvis jeg ikke tager den med i group by så siger den at den ikke er med.
hvis jeg tager den med siger den den ikke kan være med i group by fordi den ikke kan sortere på den da den jo er af type NTEXT
Avatar billede kjulius Novice
13. marts 2006 - 16:58 #3
Tja, den eneste løsning jeg kan komme på, er hvis der er et Id felt i tabellen som er unique. Så vil du kunne lave endnu en join til ShowRuns, hvor den knyttes til resultatet af din GROUP BY select. Nogenlunde sådan her:


SELECT T2.Test, T2.Status, T2.DateTime, T1.Ntextfelt
FROM ShowRuns AS T1 INNER JOIN (
SELECT applications.Id,
    applications.Test,
    CASE WHEN COUNT(results.Status) = 0
        THEN 'True'
        ELSE 'False'
    END Status, MAX(applications.DateTime) AS DateTime
FROM ShowRuns applications LEFT OUTER JOIN ShowRuns results
ON applications.Status = results.Status
AND results.Status = 'False'
AND results.Application='Flaw'
WHERE
applications.Application='Flaw'
GROUP BY applications.Test) AS T2 ON T1.Id = T2.Id
Avatar billede kjulius Novice
13. marts 2006 - 17:02 #4
Oops, Id feltet som jeg jo havde tilføjet til din SQL skal naturligvis også optræde på GROUP BY:

SELECT T2.Test, T2.Status, T2.DateTime, T1.Ntextfelt
FROM ShowRuns AS T1 INNER JOIN (
SELECT applications.Id,
    applications.Test,
    CASE WHEN COUNT(results.Status) = 0
        THEN 'True'
        ELSE 'False'
    END Status, MAX(applications.DateTime) AS DateTime
FROM ShowRuns applications LEFT OUTER JOIN ShowRuns results
ON applications.Status = results.Status
AND results.Status = 'False'
AND results.Application='Flaw'
WHERE
applications.Application='Flaw'
GROUP BY applications.Id, applications.Test) AS T2 ON T1.Id = T2.Id
Avatar billede kjulius Novice
13. marts 2006 - 17:10 #5
Og så er den ødelagt!!! :-(

Når Id er med i GROUP BY, ophæves grupperingen jo i praksis.

Damn!!!!
Avatar billede donnib Nybegynder
14. marts 2006 - 15:17 #6
øv......
jeg har prøvet nogle forskellige ting yderligere men jeg har stadigvæk ingen løsning.
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