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


Slå ihop tre stora SQL:er

Postades av 2003-05-15 01:41:48 - Benni Svensson, i forum sql-server/msde, Tråden har 11 Kommentarer och lästs av 726 personer

Går det att slå ihop dessa SQL:er till en?
Finns det någon prestandard vinnst med det?
<code>
SELECT t_SongTitlar.ArrNo, t_SongTitlar.songtitel, Min(t_Placering.Placering)
AS BästSv, Max(t_Placering.Placering) AS SämstSv, Avg(t_Placering.Placering) AS MedelSv,
Count(t_Placering.Placering) AS AntalRegSv
FROM t_Placering RIGHT JOIN t_SongTitlar ON t_Placering.ArrNo = t_SongTitlar.ArrNo
Where t_Placering.Placering <> 0
GROUP BY t_SongTitlar.ArrNo, t_SongTitlar.songtitel, t_Placering.omr_Id
Having (t_SongTitlar.songtitel = 'my friend' And ((t_Placering.omr_Id) = 1))
ORDER BY Min(t_Placering.Placering), Avg(t_Placering.Placering)

//bäst sämst medel antal i eu
SELECT t_SongTitlar.ArrNo, t_SongTitlar.songtitel, Min(t_Placering.Placering)
AS BästEu, Max(t_Placering.Placering) AS SämstEu, Avg(t_Placering.Placering)
AS MedelEu, Count(t_Placering.Placering) AS AntalRegEu
FROM t_Placering RIGHT JOIN t_SongTitlar ON t_Placering.ArrNo = t_SongTitlar.ArrNo
Where t_Placering.Placering <> 0
GROUP BY t_SongTitlar.ArrNo, t_SongTitlar.songtitel, t_Placering.omr_Id
Having (t_SongTitlar.songtitel = 'my friend' And t_Placering.omr_Id = 2)
ORDER BY Min(t_Placering.Placering), Avg(t_Placering.Placering)

//bäst sämst medel antal i vrld
SELECT t_SongTitlar.ArrNo, t_SongTitlar.songtitel, Min(t_Placering.Placering)
AS BästVärld, Max(t_Placering.Placering) AS SämstVärld, Avg(t_Placering.Placering)
AS MedelVärld, Count(t_Placering.Placering) AS AntalRegVarld
FROM t_Placering RIGHT JOIN t_SongTitlar
ON t_Placering.ArrNo = t_SongTitlar.ArrNo
Where t_Placering.Placering <> 0
GROUP BY t_SongTitlar.ArrNo, t_SongTitlar.songtitel, t_Placering.omr_Id
Having (t_SongTitlar.songtitel = 'my friend' And t_Placering.omr_Id = 3)
ORDER BY Min(t_Placering.Placering), Avg(t_Placering.Placering)
</code>


Svara

Sv: Slå ihop tre stora SQL:er

Postades av 2003-05-15 09:16:04 - Christoffer Hedgate

Du borde väl kunna slå ihop dem med UNION. Jag kollade iofs inte så noga på dem men de såg ungefär likadana ut, bortsett från olika kolumnnamn (BästSV, BästEU etc). Kolumnerna får namn från första resultatet. Om du bara tar med nån kolumn för att indikera om det är SV, EU eller vrld så bör det väl fungera. Visst är det bättre att köra en fråga än 3.


Svara

Sv: Slå ihop tre stora SQL:er

Postades av 2003-05-15 09:44:03 - Benni Svensson

Det låter ju bra. Men jag måste då fråga, principen för UNION....
Kan tyvätt inte det.


Svara

Sv: Slå ihop tre stora SQL:er

Postades av 2003-05-15 10:05:45 - Andreas Hillqvist

En UNION är helt onödig. Ta istället bort vilkoret för omr_Id och gruppera resultatet.

SELECT t_Placering.omr_Id, t_SongTitlar.ArrNo,
t_SongTitlar.songtitel,
Min(t_Placering.Placering) AS Bäst,
Max(t_Placering.Placering) AS Sämst,
Avg(t_Placering.Placering) AS Medel,
Count(t_Placering.Placering) AS AntalReg
FROM t_Placering RIGHT JOIN
t_SongTitlar ON t_Placering.ArrNo = t_SongTitlar.ArrNo
WHERE t_Placering.Placering <> 0 AND
t_SongTitlar.songtitel = 'my friend'
GROUP BY t_Placering.omr_Id,
t_SongTitlar.ArrNo,
t_SongTitlar.songtitel
ORDER BY t_Placering.omr_Id, Min(t_Placering.Placering),
Avg(t_Placering.Placering)


Svara

Sv: Slå ihop tre stora SQL:er

Postades av 2003-05-15 14:37:10 - Benni Svensson

Hej Andreas.
Detta är tydligen din starkaste sida, och det fungerar ju helt perfekt.
En sak omr_Id skrivs ju ut som 1,2,3. Hur gör jag för att få skriptet att skriva ut värdet i området istället(Sverige,Europa,Världen)?
Värdet finns i t_Område.Område
Jag försökte att lägga till det, men då fick jag ett error.


Svara

Sv: Slå ihop tre stora SQL:er

Postades av 2003-05-15 15:24:39 - Andreas Hillqvist

Jag tror Christoffer Hedgate skulle löst det på samma sätt som mig om han haft tid att titta på frågan.

Du kan ju testa med följande:

SELECT t_Område.Område,
t_SongTitlar.ArrNo,
t_SongTitlar.songtitel,
Min(t_Placering.Placering) AS Bäst,
Max(t_Placering.Placering) AS Sämst,
Avg(t_Placering.Placering) AS Medel,
Count(t_Placering.Placering) AS AntalReg
FROM t_SongTitlar LEFT JOIN
t_Placering ON t_Placering.ArrNo = t_SongTitlar.ArrNo LEFT JOIN
t_område ON t_placering.omr_id = t_område.omr_id
WHERE t_Placering.Placering <> 0 AND
t_SongTitlar.songtitel = 'my friend'
GROUP BY t_Område.Område,
t_SongTitlar.ArrNo,
t_SongTitlar.songtitel
ORDER BY t_Område.Område, Min(t_Placering.Placering),
Avg(t_Placering.Placering)


Eftersom du inte namnet på fälten som länkad t_placering med t_område sökte jag upp ett tidigare inlägg. Det underlättar om du bifoga denna information. ;o)


Svara

Sv: Slå ihop tre stora SQL:er

Postades av 2003-05-15 19:13:21 - Benni Svensson

Ber om ursäkt, jag trodde att jag hade get dig information så att det räckte.
Nu tycker nog du att jag är knepig, det här fungerade ju kanon utom sorteringen.
Jag skulle vilja ha

Sverige
Europa
Världen.

Nu är det
Europa
Sverige
Världen.

Är det knepigt att göra det?


Svara

Sv: Slå ihop tre stora SQL:er

Postades av 2003-05-15 22:23:58 - Christoffer Hedgate

Ändra i ORDER BY:

ORDER BY CASE t_Område.Område WHEN 'Sverige' THEN 1 WHEN 'Europa' THEN 2 ELSE 3 END


Svara

Sv: Slå ihop tre stora SQL:er

Postades av 2003-05-15 23:03:00 - Benni Svensson

Helt perfekt.
Nu blev jag kanonglad, tack alla för hjälpen.


Svara

Sv: Slå ihop tre stora SQL:er

Postades av 2003-05-16 00:25:18 - Andreas Hillqvist

-JAg skulle gjort det så här:

SELECT t_Område.Område,
t_SongTitlar.ArrNo,
t_SongTitlar.songtitel,
Min(t_Placering.Placering) AS Bäst,
Max(t_Placering.Placering) AS Sämst,
Avg(t_Placering.Placering) AS Medel,
Count(t_Placering.Placering) AS AntalReg
FROM t_SongTitlar LEFT JOIN
t_Placering ON t_Placering.ArrNo = t_SongTitlar.ArrNo LEFT JOIN
t_område ON t_placering.omr_id = t_område.omr_id
WHERE t_Placering.Placering <> 0 AND
t_SongTitlar.songtitel = 'my friend'
GROUP BY t_Område.omr_Id,
t_Område.Område,
t_SongTitlar.ArrNo,
t_SongTitlar.songtitel
ORDER BY t_Område.omr_Id, Min(t_Placering.Placering),
Avg(t_Placering.Placering)


Använda t_Område.omr_Id istället. Men varför har du det inte i bokstavsordning?


Svara

Sv: Slå ihop tre stora SQL:er

Postades av 2003-05-16 08:47:14 - Christoffer Hedgate

Ah, se där, nu läste jag inte ordentligt igen. Visst, är de i önskad ordning i omr_ID så är det bättre som Andreas skriver. Det kräver dock att de verkligen har samma surrogatnyckel alltid, dvs Sverige har id 1, Europa id 2 och Världen id 3. Och det känns ju egentligen lite dumt.


Svara

Sv: Slå ihop tre stora SQL:er

Postades av 2003-05-16 10:40:54 - Benni Svensson

Tack för hjälpem bägge två.
Ang sorteringsordningen. Jag registrera placeringen av mina låtar som jag har på mp3.com. Det känns lite bättre att sartera de först Sverige sen EU sen övriga Världen.

SQL:en blev helt kanon, än en gång tack.


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 619
27 953
271 709
528
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