Avatar billede petermonielsen Nybegynder
03. april 2011 - 10:18 Der er 6 kommentarer og
1 løsning

begræns returning til det samlede antal modeller

SELECT    m.modelId, MIN(p.price) AS minprice, MAX(p.price) AS maxprice, COUNT(*) AS totalPrices
FROM Model AS m INNER JOIN
Product AS p ON p.modelId = m.modelId
WHERE (m.brandId = 6)
GROUP BY m.modelId, p.price

ovenstående forespørgel virkede fint indtil jeg tilføjede "group by p.price"

Før returnerede den kun et resultat med unikke m.modelId
Efter jeg har tilføjet p.price i group by er der flere rækker som har det samme m.modelId - jeg ønsker kun at have éen række pr. m.modelId - hvordan gør jeg det?
03. april 2011 - 10:35 #1
Saa alene GROUP BY m.moldelId.  Hvad var formaalet med ogsaa at gruppere paa p.price?
Avatar billede HenrikSjang Nybegynder
03. april 2011 - 10:36 #2
Ehh, fjerner p.prise fra din group by igen?

Ellers må du lige forklare hvorfor du tilføjede den i første omgang, om det var fordi du ville opnå et eller andet med det.
Avatar billede petermonielsen Nybegynder
03. april 2011 - 11:13 #3
jeg kunne som sagt få den til at returnere "unikke" m.modelIds ved at benytte groupBy - derfor benytter jeg group by.

Det den gør er at vise et modelId og mindstePris/højeste pris for den model samt samlede antal priser fundet for den model (priser findes i product tabellen)

Hvis det kan lade sig gøre at samle en sådan visning pr. modelId uden group by vil jeg gerne se det. problemet med at benytte opstår som sagt når jeg tilføjer group by p.price - så returnerer den ikke unikke modelIds længere.
03. april 2011 - 17:25 #4
petermonielsen, jeg stod og skulle afsted, derfor svarede jeg lidt rask.  Men du vil, for hver model med brandid = 6, have hoejeste pris, laveste pris, og antal priser.  Det faar du med denne query:

SELECT m.modelId, MIN(price) AS minprice, MAX(price) AS maxprice, COUNT(*) AS totalPrices
FROM Model m JOIN Product p ON m.modelId = p.modelId where brandId = 6
GROUP BY m.modelId;

..ikke sandt?
Avatar billede petermonielsen Nybegynder
03. april 2011 - 19:31 #5
Det er rigtigt - men jeg vil samtidig også gerne sortere resultater efter product.price
og derfor bliver jeg nødt til at have product.Price med i group by listen. Dette giver mig det proble
at modelid rækker returneredes ikke længere er unikke
03. april 2011 - 19:44 #6
Jamen saa proev at forklar hvilket output du vil have.  Du siger at du for hver modelid (hvor brandid = 6) vil have en raekke.  Hvad vil du vise i den raekke?  Jeg troede du ville vise den laveste og den hoejeste pris plus antal priser for hver modelid.  Er der mere du vil vise for hver modelid?  Du vil 'sortere resultater efter product.price'.  Hvordan noejagtigt skal det se ud?  Vil du stadig have en raekke for hver modelid med minpris, maxpris, og antal priser, men saaledes at raekkerne staar i raekkefoelge efter min priser?  Efter max priser?  Efter antal priser?

Det vil kun vaere muligt at foreslaa dig en query hvis du fortaeller hvilket resultat queryen skal levere.  Kan du give et eksempel?
05. april 2011 - 19:48 #7
petermonielsen, traaden gik i staa.  Den loesning jeg foreslog duede ikke fordi jeg ikke havde forstaaet hvad du proevede at opnaa.  Jeg bad dig derfor forklare naermere, men du kom ikke tilbage.  Er spoergsmaalet i mellemtiden ikke laengere aktuelt (for eksempel fordi du fandt en loesning?)  I saa fald vil jeg bede dig lukke spoergsmaalet (opret selv et svar og accepter det) saa det ikke laengere staar som aabent i min (og andres) liste af indlaeg.  Hvis paa den anden side problemet stadig bestaar vil jeg mene jeg kan foreslaa en loesning hvis du vil forklare problemet naermere.
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