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


Klurig join

Postades av 2006-11-30 11:08:20 - Stefan Sunnerheim, i forum sql-server/msde, Tråden har 3 Kommentarer och lästs av 770 personer

Hej!
Håller på med en join som jag inte riktigt får till.

3 tabeller som förenklat ser ut enligt:

Kvitto
------
KvittoId | KassaNr
1 | 1
2 | 1
3 | 2
4 | 2


KvittoRabatt
--------------
KvittoId | RabattTyp | Summa
1 | 1 | 100
1 | 2 | 300
2 | 1 | 50
3 | 3 | 200

Rabattyp
------------
Typ
1
2
3
4

Vill få ut svaret
KassaNr | RabattTyp | Summa
1 | 1 | 150
1 | 2 | 300
1 | 3 | 0
1 | 4 | 0
2 | 1 | 0
2 | 2 | 0
2 | 3 | 200
2 | 4 | 0
osv ...
Alltså Rabattsumman per kassa & rabbattyp. Det jag har problem med
är att jag för samtliga kassor som finns med i kvitto-tabellen (samtliga
kassor som sålt något) så vill jag summera per rabatttyp oavsätt om denna
rabattyp använts på någon av dessa kassor eller ej.
Ungefär så här ser min sql-fråga ut nu:

select kassanr,IsNull(KvittoRabatt.KvittoId, RabattTyp.Typ) RabattTyp, IsNull(Sum(KvittoRabatt.Summa),0) TotalSumma from KvittoRabatt
left outer join Kvitto ON Kvitto.KvittoId=KvittoRabatt.KvittoId
right outer join Rabattyp on KvittoRabatt.RabattTyp=Rabattyp.Typ
group by KassaNr, IsNull(KvittoRabatt.KvittoId, RabattTyp.Typ)
order by KassaNr, IsNull(KvittoRabatt.KvittoId, RabattTyp.Typ)

men då får jag följande output:
KassaNr | RabattTyp | Summa
Null | 4 | 0
1 | 1 | 150
1 | 2 | 300
2 | 3 | 200

osv ...
Hur ska jag göra för att få till detta? (Kan tilläga att det inte finns någon tabell som definerar vilka kassor som finns)

Med Vänliga Hälsningar
/ Stefan


Svara

Sv: Klurig join

Postades av 2006-11-30 13:20:59 - Andreas Hillqvist

SELECT Kvitto.KassaNr, KvittoRabatt.RabattTyp, SUM(KvittoRabatt.Summa) AS Summa
FROM (KvittoRabatt INNER JOIN 
    Kvitto ON KvittoRabatt.KvittoId= Kvitto.KvittoId) LEFT JOIN 
    Rabattyp ON KvittoRabatt.RabattTyp = Rabattyp.Typ
GROUP BY Kvitto.KassaNr, KvittoRabatt.RabattTyp


Svara

Sv: Klurig join

Postades av 2006-11-30 14:01:36 - Åsa Holmgren

SELECT AllaKassor.KassaNr, AllaKassor.Typ, Sum(IIf(IsNull(KvittoRabatt.Summa),0,KvittoRabatt.Summa)) AS Summa
FROM
(SELECT KassaNr, Typ
FROM Rabatttyp, (SELECT DISTINCT KassaNr FROM Kvitto)) AS AllaKassor
LEFT JOIN
(SELECT Kvitto.KassaNr, RabattTyp, Summa
FROM Kvitto INNER JOIN KvittoRabatt ON Kvitto.KvittoId = KvittoRabatt.KvittoId) AS KvittoPerKassa
ON (AllaKassor.KassaNr = KvittoPerKassa.KassaNr) AND (AllaKassor.Typ = KvittoPerKassa.RabattTyp)
GROUP BY AllaKassor.KassaNr, AllaKassor.Typ;


Svara

Sv:Klurig join

Postades av 2006-11-30 14:23:35 - Stefan Sunnerheim

Tack för svaren
#Andreas: Din fråga ger samma output som den som jag skrev. Får bara med de rabattyper per kassa som använts på den kassan. Vill ha med alla rabattyper och summa=0 om inget kvitto med den rabattypen på kassan.
#Åsa: ... testar din fråga ...


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 629
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