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


Sortering

Postades av 2004-10-28 10:07:10 - Gert Lindholm, i forum access, Tråden har 14 Kommentarer och lästs av 695 personer

Om man har en tabell med ett fält Omgang, och låt säga att vi har 8 poster på omg 6 som är den sista.

Hur sorterar jag ut alla resultat den sista omgången? Har provat med MAX(Resultat.Omgang) och nu senast Sista(Resultat.Omgang) Här är syntaxen:
<Code> SELECT medlemmar.Namn, Last(Resultat.Omgang) AS SistaförOmgang, Resultat.Resultat, Resultat.Serier, Resultat.Poang
FROM medlemmar INNER JOIN Resultat ON medlemmar.ID = Resultat.Spelare
GROUP BY medlemmar.Namn, Resultat.Resultat, Resultat.Serier, Resultat.Poang
ORDER BY Last(Resultat.Omgang) DESC;</code>


Svara

Sv: Sortering

Postades av 2004-10-28 10:33:47 - Pelle Johansson

När det gäller sorteringen då du har group och order by måste du nog ha med ALLA fält som du väljer i select-satsen. Skall du sortera på ett summerat fält kan du sätta ett alias på det och lägga med det i order by satsen.


Svara

Sv: Sortering

Postades av 2004-10-28 11:59:26 - Johan Djupmarker

Vad är det för problem med ditt exempel? Antar att det inte gör det du har tänkt dej, men jag förstår inte riktigt vad du vill åstadkomma istället...

/Johan


Svara

Sv: Sortering

Postades av 2004-10-28 12:07:25 - Gert Lindholm

Har ett formulär där jag vill visa dom senast resultaten från helgens match/matcher. alltså baserat på sista omg. I detta fallet är det omg. 6 men efter nästa helg omg.7 och jag vill att det sker med automatik, inte med en dropdownlist.

Gert


Svara

Sv: Sortering

Postades av 2004-10-28 13:29:15 - Johan Djupmarker

Vet inte om jag fattat rätt nu, men du skulle kunna göra en subquery som hämtar högsta omg.

...WHERE omg = (SELECT MAX(omg) FROM tabell)

/Johan


Svara

Sv: Sortering

Postades av 2004-10-29 00:38:22 - Gert Lindholm

Hej Johan,
Så här ser min SELECT ut nu, och det blir ingen skillnad:

Namn Snitt Antal serier Hemmasnitt Serier hemma Bortasnitt Serier borta Poängsnitt Bästa Sämsta
Gert 201,2 8 193,5 8 175,9 0 1 850 760
Linge 187,6 8 189,3 8 203,9 0 1 758 743

Om man spelat Omg 6 hemma och det i resultattabellen står
Nr Spelare Omgang Resultat H_B Serier Poang

159 2 6 850 H 4 4
160 2 6 760 H 4 4
161 5 6 743 H 4 4
162 5 6 758 H 4 4

Så ska det ju inte kunna bli något resultat på BortaSnitt och hemmasnitt borde bli samma som Snitt.

<code>
string SqlCmd = "SELECT m.Namn,";
SqlCmd+="Round(avg(IIF(resultat is null,0,resultat)/IIF(serier is null,1,serier)),1) as Snitt,";
SqlCmd+="SUM(r.Serier) AS [Antal serier],";
SqlCmd+="(SELECT ROUND(AVG(resultat / serier),1) FROM resultat WHERE Spelare = ID AND H_B = 'H') AS Hemmasnitt,";
SqlCmd+="SUM(iif(H_B='H',r.serier,0)) as [Serier hemma],";
SqlCmd+="(SELECT ROUND(AVG(resultat / serier),1) FROM resultat WHERE Spelare = ID AND H_B = 'B') AS Bortasnitt,";
SqlCmd+="SUM(iif(H_B='B',r.serier,0)) as [Serier borta],";
SqlCmd+="ROUND(SUM(r.poang)/SUM(r.serier),2) as Poängsnitt, MAX(r.resultat) AS Bästa,";
SqlCmd+="MIN(IIF(serier = 4,r.resultat,null)) as Sämsta FROM Medlemmar AS m INNER JOIN Resultat AS r ON m.Id = r.Spelare WHERE r.Omgang = (SELECT MAX(Omgang) FROM Resultat) GROUP BY m.Namn,id ORDER BY 8 DESC,2 DESC";
</code>


Svara

Sv: Sortering

Postades av 2004-10-29 09:41:21 - Gert Lindholm

Kan man inte på något sätt använda sig av TOP x Omgang? För att kunna få ut antalet sista omgångar om man vill få ut en trend?

Har provat med TOP 3 Omgang, m.Namn Men Omgang ligger ju inte i medlemmar utan i Resultat

Använder jag TOP 3 i WHERE <code>WHERE r.Omgang = (SELECT TOP 3 Omgang FROM Resultat ORDER BY Omgang) GROUP BY m.Namn,id ORDER BY 2 DESC ,5 DESC"</code>satsen som du skrev förut så kan jag bara få ut TOP 1 alltså
Error:Det går inte att returnera mer än en post från denna underfråga.

Tacksam för all hjälp
Gert


Svara

Sv: Sortering

Postades av 2004-10-29 10:12:24 - Johan Djupmarker

Har för mig att man kan göra såhär:

WHERE r.Omgang IN(SELECT TOP 3 Omgang FROM Resultat ORDER BY Omgang) GROUP BY m.Namn,id ORDER BY 2 DESC ,5 DESC

/Johan


Svara

Sv: Sortering

Postades av 2004-10-29 10:35:33 - Gert Lindholm

Tack för ditt snabba svar, du är en klippa

Jag fick ut datagriden men måste kollräkna lite. För det såg skumt ut med bara 4 serier. När vi borde spelat 12 kanske 16 serier.

Namn Snitt Antal serier Hemmasnitt Hemma Bortasnitt Borta Poängsnitt Bästa Sämsta
PW 194,5 4 197,2 4 189 0 1 778 778
Tomas 193 4 186,7 4 192,4 0 1 772 772
osv.

Gert


Svara

Sv: Sortering

Postades av 2004-10-30 01:54:42 - Gert Lindholm

Om man Skriver
<Code>
SELECT TOP 3 Omgang,*
FROM Resultat ORDER BY Omgang DESC
</Code>

Får man ut följande resultat
<Code>
Omgang Nr Spelare Omgang Resultat H_B Serier Poang Lag
----------- ----------- ----------- ----------- ----------- ----- ----------- ----------- -----
6 163 8 6 727 H 4 4 A
6 164 8 6 789 H 4 3 A
6 165 14 6 704 H 4 3 A

</code>

Men vad jag vill egentligen få ut ur min db är 43 rader som har omg 6, 5 och 4 Alltså TOP 3


Svara

Sv: Sortering

Postades av 2004-10-30 14:16:04 - Johan Djupmarker

SELECT Omgang,*
FROM Resultat WHERE Omgang IN(SELECT TOP 3 Omgang FROM Resultat ORDER BY Omgang DESC) ORDER BY Omgang DESC

/Johan


Svara

Sv: Sortering

Postades av 2004-10-30 21:57:49 - Gert Lindholm

Där har vi det jag frågade om ifrån början. Alltså sista omgången.

Om man tar SELECT TOP 3 så är det dom tre sista posterna i db vad jag kan förstå. Inte dom tre högsta värdena i fältet omgången. Så jag kan inte förstå hur detta kan ta ut 16 poster. dvs dom 16 poster med omgång 6 som är den senaste.

Testade ovan kod och det spelar ingen roll om jag byter ut TOP 3 till TOP1 el. 4 det blir samma resultat.


Klurigt det här!
Gert


Svara

Sv: Sortering

Postades av 2004-10-31 09:32:02 - Gert Lindholm

Löste det med att skapa en tabell till Omg och sen en RIGHT OUTER JOIN på Resultat.

<code>SELECT dbo.Omg.Nr AS OmgNr, dbo.Resultat.*
FROM dbo.Omg RIGHT OUTER JOIN
dbo.Resultat ON dbo.Omg.Nr = dbo.Resultat.Omgang
WHERE (dbo.Omg.Nr IN
(SELECT TOP 3 Nr
FROM Omg
ORDER BY Nr DESC))</code>

Tack Johan för din hjälp.

En liten följdfråga:

Varför står det inget i böcker typ "Access 2003" eller "SQL Server 2000", "DBO.NET" hur man löser dessa typer av problem. I dom böcker man läst står det bara SELECT * FROM Db Aldrig några mer avancerade urvalsfrågor.

Ha en bra dag!


Svara

Sv: Sortering

Postades av 2004-10-31 11:27:14 - Johan Djupmarker

Sorry, missade DISTINCT... Såhär skulle det vara...

SELECT Omgang,*
FROM Resultat WHERE Omgang IN(SELECT DISTINCT TOP 3 Omgang FROM Resultat ORDER BY Omgang DESC) ORDER BY Omgang DESC

/Johan


Svara

Sv: Sortering

Postades av 2004-10-31 11:33:43 - Gert Lindholm

Ja nu fungerar det. Då slipper jag använda en tabell omg. Men vilket är mest databasmässigt effektivast?


Svara

Nyligen

  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino
  • 04:14 Vad finns det för kratomalternativ
  • 14:16 Indian online casino
  • 14:15 Indian online casino
  • 08:28 Butiksskyltar: Hur upplever utbude

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 570 873
27 965
271 770
486
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