webForumDet fria alternativet

Varför skillnaderna i resultat?

6 svar · 267 visningar · startad av SugarDaddy

SugarDaddyMedlem sedan apr. 20021 155 inlägg
#1

Tabell uppdrag m lite data(id är bara en oinstressant räknare):

id | styrelseid | funktionsid
56 | 68 | 1
50 | 67 | 2
54 | 69 | 4
53 | 71 | 5
55 | 74 | 5
....
57 | 68 | 11
58 | 68 | 12

  1. SQL-satsen "SELECT styrelseid FROM uppdrag ORDER BY funktionsid" ger(föga överraskande):
    68
    67
    69
    71
    72
    74
    73
    68
    68

Eftersom jag endast vill ha unika styrelseid provade jag med följande:
2) SQL-satsen "SELECT DISTINCT styrelseid FROM uppdrag ORDER BY funktionsid" vilket ger:

67
69
73
71
72
74
68

- Why is denna bisarra ordning?

  1. SQL-satsen "SELECT MIN(funktionsid), styrelseid FROM uppdrag GROUP BY styrelseid ORDER BY 1" ger:
    68
    67
    69
    71
    72
    74
    73

Helt korrekt o precis vad jag vill ha, men varför får jag inte samma resultat med alternativ två? :q

Engine^Medlem sedan dec. 20003 887 inlägg
#2

Det är ingen bisarr ordning

ORDER BY funktionsid

Du kanske inte tänker på vad du sorterar efter... ;)

LarsGMedlem sedan dec. 200012 464 inlägg
#3

Det är frågan som är bisarr och den DBMS som tillåter den är också bisarr.

SugarDaddyMedlem sedan apr. 20021 155 inlägg
#4

Aha, då får jag och Mysql vara bisarra tillsammans isåfall, tycker att den borde sagt ifrån när jag försökte med det andra alternativet och inte gett mig en resultatlista? :r :)
Sen tycker jag att tredje alternativet känns lite konstruerat, förvisso väl fungerande - förslag på alternativa "bättre" sätt att skriva frågan?
(Behöver jag tillägga att SQL inte inte ens är i närheten av min topplista över saker-jag-tycker-jag-är-bra-på...) :e

@ndersMedlem sedan juni 200032 969 inlägg
#5

Det luktade MySQL lång väg. :)

Den tredje frågan tycker jag ser okej ut, men har du verkligen givit oss rätt resultatexempel? Kommer 68 före 67?

SugarDaddyMedlem sedan apr. 20021 155 inlägg
#6

Jo, styrelseid 68 motsvarar en person i en tabell "styrelse" och funktionsid 1 motsvarar posten ordförande i en tabell "funktion".
Person med id 67 är vice ordförande=funktionsid 2.

styrelse
styrelseid | fornamn | efternamn | ...pers uppgifter
68 | Anders | Andersson
67 | Bengt | Bengtsson
...

funktion
funktionsid | funktionsnamn
1 | Ordförande
2 | Vice ordförande
...
11 | Medlemsansvarig

Min tanke var att första leta upp persid för de i styrelsen, fallande ordning från ordförande o neråt i hierarkin, oavsett om de har flera uppdrag.
Sedan plocka ut pers uppgifter namn, adress osv och till sist lista upp de uppdrag de har i styrelsen.

- Borde jag ha separerat till två tabeller istället. En för "rena" styrelseuppdrag, en för extrauppdrag?

@ndersMedlem sedan juni 200032 969 inlägg
#7

Sorry, jag tänkte helt ruttet. :)
Jag läste helt enkelt fel i SQL-frågan, jag fick för mig att det var funktionsid du listade vid den tredje frågan.

Jag återkommer om jag lyckas tänka igenom vad du menar. :)

mvh

124 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)