Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Hjälp med sql fråga

Postades av 2007-05-30 15:58:13 - Stefan Sunnerheim, i forum sql-server/msde, Tråden har 8 Kommentarer och lästs av 793 personer

Hej!
Har problem att få ihop en sql fråga.

Har en tabell som ser ut så här

Id | Artikel | Antal | Pris
---------------------------------------
10 10-1 1 39
10 10-1 5 35
15 10-1 1 49
15 10-1 5 29
10 12-3 1 12

Tabellen beskriver artiklars priser på olika prislistor. Id är listans namn och priset är kostnaden/styck vid köp av det antal som står i antals kolumnen.

Nu vill jag skriva en fråga som tar ut de bästa priserna i varje antal per artikel. Alltså en fråga som ger detta svar:
Id | Artikel | Antal | Pris
---------------------------------------
10 10-1 1 39
15 10-1 5 29
10 12-3 1 12

Min fråga ser ut så här:
SELECT Id, Artikel, Antal, Min(Pris) FROM tabell
GROUP BY Artikel, Antal.

Problemet är att jag inte kan få med Id i selecten eftersom den då klagar på att den måste vara med i group by villkoret vilket jag inte vill eftersom jag vill har lägsta pris för antalet oavsätt Id.

Hur kan jag lösa detta?


Svara

Sv: Hjälp med sql fråga

Postades av 2007-05-30 18:58:24 - Johan Djupmarker

SELECT tabell.Id, tabell.Artikel, tabell.Antal, tabell.Pris FROM tabell INNER JOIN (SELECT Artikel, Antal, Min(Pris) FROM tabell GROUP BY Artikel, Antal) AS sub ON tabell.Artikel = sub.Artikel AND tabell.Antal = sub.Antal AND tabell.Pris = sub.Pris

/Johan


Svara

Sv:Hjälp med sql fråga

Postades av 2007-05-30 21:24:54 - Stefan Sunnerheim

Tack för svaret.
Nu gör man ju en "sub-tabell" utan id´et o joinar sen mot den. Känns lite "fult" att joina mot en "icke-nyckel" som pris som i detta falla är av typen decimal med 4 decimaler. Finns det något annat sätt att formulera sql´en för att slippa detta?


Svara

Sv: Hjälp med sql fråga

Postades av 2007-05-31 07:35:32 - Johan Djupmarker

Inte som jag känner till, tyvärr.

/Johan


Svara

Sv: Hjälp med sql fråga

Postades av 2007-05-31 09:17:47 - Andreas Hillqvist

Dett fins varianter men det är samma princip.

SELECT tabell.Id, tabell.Artikel, tabell.Antal, tabell.Pris
FROM tabell 
WHERE tabell.Pris = 
    (SELECT Min(SubPris) MinPris
     FROM tabell AS Sub
     WHERE 
         tabell.Artikel = sub.Artikel AND 
         tabell.Antal = sub.Antal)


Det känns som Johans fråga är bättre då jag har för mig att underfrågan måste utföras för varje rad.

Index hjälper.

Om du lagrar pris som heltal i ören så skulle du kanske få bättre prestanda.


Svara

Sv: Hjälp med sql fråga

Postades av 2007-05-31 22:19:09 - Kristofer Aaa

Det ska väl inte spela någon roll egentligen om det är en join eller "subquery". Beror naturligtvis på databashanteraren, men en bra sådan ska likställa frågorna och ge samma exekveringsplan och därmed samma exekveringstid.

Men naturligtvis kan man ge den lite tips om det går...


Svara

Sv: Hjälp med sql fråga

Postades av 2007-06-01 00:37:49 - Håkan Borneland

Ännu en variant bland alla andra varianter, man blir rent snurrig ........... ;-)
Principipen är och förblir densamma, som Andreas skrev.

SELECT Id, Artikel, Antal, Pris
FROM tabell
WHERE Pris IN (SELECT MIN(Pris) FROM tabell GROUP BY Artikel, Antal)


//Håkan


Svara

Sv:Hjälp med sql fråga

Postades av 2007-06-01 01:50:12 - Andreas Hillqvist

Tyvärr kan den frågan retunerar den fel resultat.
Pris kan bar tillsaman med artikel och antal identifiera en post.

Om ett pris för en artikel motsvara det lägsta för en annan kommer problem att uppstå.

Så för att frågan skall fungera måste samtliga pris belopp vara unika.


Svara

Sv: Hjälp med sql fråga

Postades av 2007-06-01 14:16:55 - Håkan Borneland

<b>Andreas:</b>
Jamenvisst är det så!!
Bra att du uppmärksammade det.
Slarvigt genomtänkt av mig... :-(

//Håkan


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 616
27 953
271 709
5 814
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies