Kom ihåg mig?
Home Menu

Menu


SQL-problem med GROUP BY

Ämnesverktyg Visningsalternativ
Oläst 2007-09-21, 09:20 #1
a_80 a_80 är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2007
Inlägg: 2
a_80 a_80 är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2007
Inlägg: 2
Hej!

Jag har en tabell med cirka 20 kolumner och 65000 rader.
I denna vill jag ta ut informationen ur 6 eller 7 stycken kolumner, men bara för exklusiva värden i en utav dessa (och då det värdet som tillkom senast). Jag har kommit fram till följande:

SELECT MAX(ID) AS id, Rumsnr
FROM NTA_CHANGES
WHERE (ByggnadNr = 003) AND (ID >= 55981)
GROUP BY Rumsnr
ORDER BY Rumsnr

Den gör nästan precis som jag vill...
Jag skulle vilja lägga till flera kolumner i SELECT-satsen, men då säger den bara att kolumnerna inte är med "either in an aggregate function or in the GROUP BY clause".

Hur gör jag?!?!?!
a_80 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-09-21, 09:43 #2
coredevs avatar
coredev coredev är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Sep 2007
Inlägg: 1 554
coredev coredev är inte uppkopplad
Bara ett inlägg till!
coredevs avatar
 
Reg.datum: Sep 2007
Inlägg: 1 554
Hej!

Jag är inte 100% säker på vad du försöker göra, men pröva med nestlade SQL-satser, funkar i alla större RDBMS.

Exempel:

Kod:
select
  *
from
  (select max(id) as id, Rumsnr from NTA_CHANGES group by Rumsnr) as query1,
  NTA_CHANGES
where
  (NTA_CHANGES.ByggnadNr = 003) AND
  (NTA_CHANGES.ID >= 55981) AND 
  (NTA_CHANGES.id = query1.id)
order by
  NTA_CHANGES.Rumsnr;
Dvs i den inre sql-satsen hämtar du de id-nummer du söker, och i den yttre hämtar du resten av informationen.

Kan detta vara det du söker?
coredev är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-09-21, 10:57 #3
Kays avatar
Kay Kay är inte uppkopplad
Medlem
 
Reg.datum: May 2004
Inlägg: 292
Kay Kay är inte uppkopplad
Medlem
Kays avatar
 
Reg.datum: May 2004
Inlägg: 292
Vet att jag har haft såna problem innan också. Då jobbade jag mot MS ACCESS och felet avhjälptes genom att varje fält som angavs under SELECT även angavs i GROUP BY, exempelvis:

SELECT ID, Rum, Byggnad, Våning FROM hotell ORDER BY Rum, Byggnad, Våning

Det kanske funkar?
Kay är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-09-21, 11:19 #4
Frejs avatar
Frej Frej är inte uppkopplad
Flitig postare
 
Reg.datum: Jul 2004
Inlägg: 463
Frej Frej är inte uppkopplad
Flitig postare
Frejs avatar
 
Reg.datum: Jul 2004
Inlägg: 463
När man använder Aggregerande funktioer (Count, SUM, AVG MAX osv) så tillåter inte SQL att det returneras fler olika värden utanför funktionen som inte går att gruppera på.

Så de kolumner du vill visa utöver (MAX(ID)) måste gå att gruppera. Div de måste innehålla liknande värden.
Frej är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-09-21, 13:18 #5
a_80 a_80 är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2007
Inlägg: 2
a_80 a_80 är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2007
Inlägg: 2
Coredev - Tack, det fungerar... nästan.
Av någon anledning tappar jag några rader utan synbar anledning :S
Måste undersöka detta och se om jag kan hitta varför just den/de raderna blir uteslutna.

Grillcliff - Dessvärre förstör det lite om jag tar group by på flera kolumner, eftersom den då först söker efter exklusiva värden i kolumnen Rumsnr. Hittar den sedan en dublett för värdet Rumsnr jämför den dessa posters värden i övriga kolumner nämnda i "group by" och om dessa inte matchar inkluderar den de raderna i resultatet. Slutsats: jag får dubletter på vissa värden i kolumnen Rumsnr

//A
a_80 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-09-21, 14:15 #6
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Having på slutet kan vara ett sätt att välja i resultatet
Magnus_A är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-09-21, 14:29 #7
Frejs avatar
Frej Frej är inte uppkopplad
Flitig postare
 
Reg.datum: Jul 2004
Inlägg: 463
Frej Frej är inte uppkopplad
Flitig postare
Frejs avatar
 
Reg.datum: Jul 2004
Inlägg: 463
En liten fråga bara ByggnadNr är det Integer eller Sträng datatyp, Är det integer så lär 003 bli 3. Och du passar värdet som integer typ.
Frej är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 02:11.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017