Jag skulle behöva ha lite hjälp med denna SQL, jag får inte ihop den. Jag har kommit något längre, använt en annan SQL, men når ändå inte riktigt fram. Hej Andreas. CREATE VIEW viewBästaPlaceringar AS Det ser ju jätteintressant ut, men när jag skulle göra viewn i QA så fick jag följande error: hmmm... Jga glömde From satsen i frågan. ;o) Nja Andreas, den fungerar inte riktigt som jag hade tänkt mig. CREATE VIEW viewBästaPlaceringar AS mmm jag får detta error, jag hittar inte var jag skall ändra:Bäst antal gånger.
Vad jag skulle vilja ha ut är,
Som bäst(alltså bästa placering)
Antal ggr(alltså hur många gånger har låten varit bäst)
Vilket område(Sverige Europa, Världen)
Jag har haft denna biten som grund:
<code>
SELECT
MIN(t_placering.placering) AS Bast,
Count(t_Placering.Placering) AS AntalPlac, t_Område.Område
FROM (t_Område INNER JOIN t_Placering ON (t_Område.omr_Id = t_Placering.omr_Id) AND (t_Område.omr_Id = t_Placering.omr_Id))
INNER JOIN t_SongTitlar ON t_Placering.ArrNo = t_SongTitlar.ArrNo
WHERE t_SongTitlar.songtitel = 'my friend' AND t_Placering.Placering <> 0
GROUP BY t_SongTitlar.ArrNo, t_SongTitlar.songtitel, t_Område.Område
ORDER BY Bast,AntalPlac DESC
</code>
Jag får NÄSTAN fram rätt resultat, men jag har fel på hur han räknar. Jag ville ju få veta hur många gånger resp låt har varit bäst i resp område.Sv: Bäst antal gånger.
<code>
SELECT t_SongTitlar.songtitel, t_Område.Område, t_Placering.Placering,
Count(t_Placering.Placering) AS AntalGånger FROM t_Område
INNER JOIN (t_Placering INNER JOIN t_SongTitlar
ON t_Placering.ArrNo = t_SongTitlar.ArrNo)
ON (t_Område.omr_Id = t_Placering.omr_Id) AND (t_Område.omr_Id = t_Placering.omr_Id)
Where t_Placering.Placering <> 0
GROUP BY t_SongTitlar.ArrNo, t_SongTitlar.songtitel, t_Område.Område, t_Placering.Placering
HAVING (t_SongTitlar.songtitel='my friend' )
ORDER BY CASE t_Område.Område WHEN 'Sverige' THEN 1 WHEN 'Europa' THEN 2 ELSE 3 END, Min(t_Placering.Placering)
</code>
Vad som är felet är att jag ville bara ha top resultatet ifrån alla tre områdenna.
Som det nu är, så får jag alla resultaten.Sv: Bäst antal gånger.
Det här har jag aldrig sysslat med, skulle du vilja förklara hur jag bör göra för att få mitt resultat?Sv: Bäst antal gånger.
SELECT t_Placering.ArrNo, t_Placering.omr_Id, Min(t_Placering.Placering) AS Placering
GROUP BY t_Placering.ArrNo, t_Placering.omr_Id
SQL fråga;
SELECT t_SongTitlar.songtitel, t_Område.Område, viewBästaPlaceringar.Placering,
Count(*) AS AntalGånger
FROM (viewBästaPlaceringar INNER JOIN t_SongTitlar
ON viewBästaPlaceringar.ArrNo = t_SongTitlar.ArrNo) LEFT JOIN t_Område ON (viewBästaPlaceringar.omr_Id = t_Område.omr_Id)
WHERE (t_SongTitlar.songtitel='my friend' )
GROUP BY t_SongTitlar.ArrNo, t_SongTitlar.songtitel, t_Område.Område, viewBästaPlaceringar.Placering
ORDER BY CASE t_Område.Område WHEN 'Sverige' THEN 1 WHEN 'Europa' THEN 2 ELSE 3 END, viewBästaPlaceringar.PlaceringSv: Bäst antal gånger.
<code>
Server: Msg 107, Level 16, State 3, Procedure viewBästaPlaceringar, Line 2
The column prefix 't_Placering' does not match with a table name or alias name used in the query.
Server: Msg 107, Level 16, State 1, Procedure viewBästaPlaceringar, Line 2
The column prefix 't_Placering' does not match with a table name or alias name used in the query.
Server: Msg 107, Level 16, State 1, Procedure viewBästaPlaceringar, Line 2
The column prefix 't_Placering' does not match with a table name or alias name used in the query.
Server: Msg 107, Level 16, State 1, Procedure viewBästaPlaceringar, Line 2
The column prefix 't_Placering' does not match with a table name or alias name used in the query.
Server: Msg 107, Level 16, State 1, Procedure viewBästaPlaceringar, Line 2
The column prefix 't_Placering' does not match with a table name or alias name used in the query.
</code>
Väldigt konstigt därför att tabelnamn och fälnamnen som du har skrivit in stämmer ju.Sv: Bäst antal gånger.
CREATE VIEW viewBästaPlaceringar AS
SELECT t_Placering.ArrNo, t_Placering.omr_Id, Min(t_Placering.Placering) AS Placering
FROM t_Placering
GROUP BY t_Placering.ArrNo, t_Placering.omr_IdSv: Bäst antal gånger.
Jag glömde nog att säga men den skall ju inte ta med nollorna(0).
Sen räknar den inte korrekt.
När jag kopierade/klistrade in din kod(efter att har försökt förstå mig på den) så gjorde jag viewn, inga problem.
Sen så körde jag den i QA och där ser jag problemet.
Den räknar nollan som högre(lägre) tal än 1:an.
I mitt exempel så räknar den My Friend som etta en gång i Sverige, faktum är att det finns 14 sådana poster, så den skulle alltså räkna till 14..
För att ta bort nollorna så försökte jag med:
AND viewBästaPlaceringar.placering <> 0
Detta resulterar i att jag fick enbart fram post i Sverige, inte Europa där det också finns ett par ettor.
Så någonting är nog inte så bra....
Vad tror du?Sv: Bäst antal gånger.
SELECT t_Placering.ArrNo, t_Placering.omr_Id, Min(t_Placering.Placering) AS Placering
FROM t_Placering
WHERE t_Placering.Placering > 0
GROUP BY t_Placering.ArrNo, t_Placering.omr_Id
SELECT t_SongTitlar.songtitel, t_Område.Område, viewBästaPlaceringar.Placering,
Count(*) AS AntalGånger
FROM ((viewBästaPlaceringar LEFT JOIN t_SongTitlar
ON viewBästaPlaceringar.ArrNo = t_SongTitlar.ArrNo) LEFT JOIN t_Område ON viewBästaPlaceringar.omr_Id = t_Område.omr_Id) LEFT JOIN t_Placering ON (viewBästaPlaceringar.ArrNo = t_Placering.ArrNo) AND (viewBästaPlaceringar.Placering = t_Placering.Placering) AND (viewBästaPlaceringar.omr_Id = t_Område.Placering)
WHERE (t_SongTitlar.songtitel='my friend')
GROUP BY t_SongTitlar.ArrNo, t_SongTitlar.songtitel, t_Område.Område, viewBästaPlaceringar.Placering
ORDER BY CASE t_Område.Område WHEN 'Sverige' THEN 1 WHEN 'Europa' THEN 2 ELSE 3 END, viewBästaPlaceringar.Placering
Missade att ta med t_Placering i frågan.
Istället för att soerera områden på en case sats bör du lägga till en kolumn i t_Område för sortering. Sv: Bäst antal gånger.
Server: Msg 207, Level 16, State 3, Line 1
Invalid column name 'Placering'.