FAQ |
Kalender |
2007-09-21, 09:20 | #1 | ||
|
|||
Nykomling
|
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?!?!?! |
||
Svara med citat |
2007-09-21, 09:43 | #2 | |||
|
||||
Bara ett inlägg till!
|
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; Kan detta vara det du söker? |
|||
Svara med citat |
2007-09-21, 10:57 | #3 | |||
|
||||
Medlem
|
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? |
|||
Svara med citat |
2007-09-21, 11:19 | #4 | |||
|
||||
Flitig postare
|
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. |
|||
Svara med citat |
2007-09-21, 13:18 | #5 | ||
|
|||
Nykomling
|
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 |
||
Svara med citat |
2007-09-21, 14:15 | #6 | ||
|
|||
Klarade millennium-buggen
|
Having på slutet kan vara ett sätt att välja i resultatet
|
||
Svara med citat |
2007-09-21, 14:29 | #7 | |||
|
||||
Flitig postare
|
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.
|
|||
Svara med citat |
Svara |
|
|