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


SQL till Stored Procedure

Postades av 2002-08-10 12:43:23 - Benni Svensson, i forum sql-server/msde, Tråden har 6 Kommentarer och lästs av 905 personer

Jag försöker att göra en SQL till en SP.
Det blir galet, resultaten bli olika, varför???

<code>
SP:n
CREATE Procedure spFyllGrid
(@songtitel varchar(20))
As
SELECT t_songtitlar.songtitel, t_placering.Datum,
Sum(CASE t_område.Område WHEN 'Sverige' THEN t_placering.Placering ELSE 0 END)
AS Sverige,
Sum(CASE t_område.Område WHEN 'Europa' THEN t_placering.Placering ELSE 0 END)
AS Europa,
Sum(CASE t_område.Område WHEN 'Världen' THEN t_placering.Placering ELSE 0 END)
AS Världen
FROM t_songtitlar
INNER JOIN (t_område
INNER JOIN t_placering ON t_område.omr_Id = t_placering.omr_Id)
ON t_songtitlar.ArrNo = t_placering.ArrNo
Where t_SongTitlar.songtitel = @songtitel
GROUP BY t_songtitlar.songtitel, t_placering.Datum
ORDER BY t_placering.Datum DESC
GO


SQL:
SELECT t_songtitlar.songtitel, t_placering.Datum,
Sum(CASE t_område.Område WHEN 'Sverige' THEN t_placering.Placering ELSE 0 END)
AS Sverige,
Sum(CASE t_område.Område WHEN 'Europa' THEN t_placering.Placering ELSE 0 END)
AS Europa,
Sum(CASE t_område.Område WHEN 'Världen' THEN t_placering.Placering ELSE 0 END)
AS Världen
FROM t_songtitlar
INNER JOIN (t_område
INNER JOIN t_placering
ON t_område.omr_Id = t_placering.omr_Id)
ON t_songtitlar.ArrNo = t_placering.ArrNo
WHERE t_songtitlar.Songtitel = '" & List1.Text & "'
GROUP BY t_songtitlar.songtitel, t_placering.Datum
ORDER BY t_placering.Datum DESC
</code>
Dom är likadana, men ger olika resultat???


Svara

Sv: SQL till Stored Procedure

Postades av 2002-08-10 16:28:37 - Andreas Hillqvist

Kan det vara att den är längre än 20 tecken?

Du skulle kunna optimera frågan om du arbetde mot t_placering.omr_Id istället för t_område.Område. Att jämföra tal går snabbara än strängar. Samt att du slipper en join.

t_område:
omr_Id Område
1 'Sverige'
2 'Europa'
3 'Världen'

CREATE Procedure spFyllGrid
(@songtitel varchar(50))
As
SELECT t_songtitlar.songtitel, t_placering.Datum,
Sum(CASE t_område.omr_Id WHEN 1 THEN t_placering.Placering ELSE 0 END)
AS Sverige,
Sum(CASE t_område.omr_Id WHEN 2 THEN t_placering.Placering ELSE 0 END)
AS Europa,
Sum(CASE t_område.omr_Id WHEN 3 THEN t_placering.Placering ELSE 0 END)
AS Världen
FROM t_songtitlar INNER JOIN t_placering ON t_songtitlar.ArrNo = t_placering.ArrNo
WHERE t_SongTitlar.songtitel = @songtitel
GROUP BY t_placering.Datum, t_songtitlar.songtitel
ORDER BY t_placering.Datum DESC



Svara

Sv: SQL till Stored Procedure

Postades av 2002-08-10 16:55:36 - Pontus Wång

Ja och vill man öka prestanda ytterligare så är Having bättre än where-villkor i de flesta fall:

CREATE Procedure spFyllGrid
(@songtitel varchar(50))
As
SELECT t_songtitlar.songtitel, t_placering.Datum,
Sum(CASE t_område.omr_Id WHEN 1 THEN t_placering.Placering ELSE 0 END)
AS Sverige,
Sum(CASE t_område.omr_Id WHEN 2 THEN t_placering.Placering ELSE 0 END)
AS Europa,
Sum(CASE t_område.omr_Id WHEN 3 THEN t_placering.Placering ELSE 0 END)
AS Världen
FROM t_songtitlar INNER JOIN t_placering ON t_songtitlar.ArrNo = t_placering.ArrNo
GROUP BY t_placering.Datum, t_songtitlar.songtitel
HAVING t_SongTitlar.songtitel = @songtitel
ORDER BY t_placering.Datum DESC


Svara

Sv: SQL till Stored Procedure

Postades av 2002-08-11 12:24:40 - Benni Svensson

Nu fungerar det, men när jag skall försöka att optimera enligt era förslag, så åker jag på patrull.

Error 107:
The culumn prefix't_område' does not match with a table name or alias name use in the query.

The culumn prefix't_område' does not match with a table name or alias name use in the query.

The culumn prefix't_område' does not match with a table name or alias name use in the query.

Jag antar att det har med detta att göra:
t_område:
omr_Id Område
1 'Sverige'
2 'Europa'
3 'Världen'

Hur löser jag det???


Svara

Sv: SQL till Stored Procedure

Postades av 2002-08-11 18:25:25 - Benni Svensson

Har kommit lite längre:
<code>
CREATE Procedure spFyllGrid
(@songtitel varchar(50))
As
SELECT t_songtitlar.songtitel, t_placering.Datum,
Sum(CASE t_område.omr_Id WHEN 1 THEN t_placering.Placering ELSE 0 END)
AS Sverige,
Sum(CASEt_område.omr_Id WHEN 2 THEN t_placering.Placering ELSE 0 END)
AS Europa,
Sum(CASE t_område.omr_Id WHEN 3 THEN t_placering.Placering ELSE 0 END)
AS Världen
FROM t_songtitlar INNER JOIN t_placering ON t_songtitlar.ArrNo = t_placering.ArrNo
GROUP BY t_placering.Datum, t_songtitlar.songtitel
HAVING t_SongTitlar.songtitel = @songtitel
ORDER BY t_placering.Datum DESC

GO
</code>
Nu får jag ett error 156:

Incorrect syntax near the keyword 'WHEN'

Vad tror ni???


Svara

Sv: SQL till Stored Procedure

Postades av 2002-08-11 19:28:35 - Lars Berg

Det saknas ett mellanslag

Sum(CASEt_område.omr_Id WHEN 2

här

Jag ser inte heller att du har med t_område i from.


Svara

Sv: SQL till Stored Procedure

Postades av 2002-08-11 23:56:18 - Benni Svensson

Tack för ditt försök, men det hjälpte inte.


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