Är inte det den tabell du redan har, med alla resultat i? :q
Hur vill du att din tabell ska se ut, hur ser dina tre tabeller du redan har ut?
14 svar · 485 visningar · startad av Kermit
Försöker mixtra med en serietabell
har en tabell med samtliga resultat
Har från denna lyckats få ut hemmatabell resp bortatabell, men hur få en "totaltabell"?
fält:
hlag|blag|hmal|bmal|hpoäng|bpoäng|v|o|f|
någon vänlig själ?
:q
Är inte det den tabell du redan har, med alla resultat i? :q
Hur vill du att din tabell ska se ut, hur ser dina tre tabeller du redan har ut?
jag är otroligt otydlig...men,men, é man ny så é man.
Har En tabell med ovanstående fält.
på en asp-sida lyckas jag från den presentera en tabell utefter hemmalagens resultat(hemmatabellen) och en efter bortalagens.
men vette katten hur jag skall få Lagens alla matcher, både hemma och borta att räknas samman i en tabell(i en aspsida)
Det kanske inte går utifrån en enda tabell ur en databas?
Jag vet inte om jag förstår problemet. I de SQL-frågor du använder idag ställer du förmodligen som villkor hlag='DIF' eller blag='DIF'. Får du inte det resultat du vill ha om har med båda de villkoren i WHERE-satsen? Alltså:
... WHERE (hlag='DIF' OR blag ='DIF')
ne, har ingen WHERE .
Men jag är ny på detta och stökar väl till...
Här följer min SQL-line:
----------------------------------------------------------------------------------
SQL="SELECT Sum(hmal-bmal) AS hmalskillnad ,hlag,COUNT(*) AS matcher,
Sum(hmal) AS hmaltot,Sum(hpoang) AS hpoang,Sum(bmal) AS bmaltot,
sum(v) AS hvinst,sum(o) AS hoav,sum(f) AS hforl From mprogram
WHERE matchtyp='serie' GROUP BY hlag order by 5 desc,1 desc"
----------------------------------------------------------------------------------
detta kanske är helsnett?
det får iaf en "hemmatabell" får ut bortatabellen på samma sätt,
men självklartändrar jag lite här och där. Men en "riktig" tabell
med alla resultat..Nepp...
Om all info som ska ut finns i totaltabellen:
Select det som ska ut from totaltabell
where hlag = blag order by hlag;
Om all info finns i H och B tillsammans, men inte i T:
Select det som ska ut from hemmatabell H, bortatabell B
where H.hlag = B.blag order by H.hlag;
Om alla tre tabellerna måste blandas in:
Select det som ska ut
from hemmatabell H, bortatabell B, totaltabell T
where H.hlag = B.blag and T.hlag = H.hlag and B.blag = T.blag
order by H.hlag;
Eftersom alla lag är lika kan du ordna över vilken som, med samma resultat.
Har bara EN tabell i databasen
EN tabell är allt jag har...Det kanske int räcker?
fält
hlag |blag|hmal|bmal|hpoang|bpoang|v|o|f|
radex:
blåvitt| aik |5 |1 |2 |0 |1|0|0|
aik |djurg.|2 |3 |0 |2 |0|0|1|
öis .|blåvitt|1 |1 |1 |1 |0|1|0|
Av detta vill jag då få ut:
1 Blåvitt 2 match 1 vinst 1 oavg,0 förl,6-1, 3 poäng
2 ÖIS . 2 match 1 vinst, 1 oavg, 0 förl, 4-3, 3 poäng
.....osv
testsida
Jamen, det är ju precis de fält du har i den tabell du har? :q Alltså funkar mitt första förslag.
Select hlag, blag, hmal, bmal, hpoäng, bpoäng, v, o, f
from tabellnamn;
Jag är nog rätt trög, men jag fattar inte.. :r
Jag tänker väl helgalet, men jag får inte ut en serietabell baserad på samtliga matchresultat ur min enda db-tabell.
------------------------------------------------------------
Om all info som ska ut finns i totaltabellen:
Select det som ska ut from totaltabell
where hlag = blag order by hlag;
i resultattabellen är ju aldrig hlag=blag ?
lagen spelar ju alltid mot andra lag.
I de SQL-frågor du använder idag ställer du förmodligen som villkor hlag='DIF' eller blag='DIF'. Får du inte det resultat du vill ha om har med båda de villkoren i WHERE-satsen? Alltså:
Då får jag väl fram matcherna där 'DIF' finns med, men inga andra resultat?
Har du inte lite mer komplett kodex att dela med dig aV?
(Din kommentar ovan är riktig, men förslaget kom innan jag fattade hur tabellen såg ut.)
aasah skrev:
Jamen, det är ju precis de fält du har i den tabell du har? :q Alltså funkar mitt första förslag.
Select hlag, blag, hmal, bmal, hpoäng, bpoäng, v, o, f
from tabellnamn;
Varför funkar inte detta? :q
Hmm...
För att få fram resultaten funkar det ju utan problem.
Men jag får inte ihop en serietabell
Alltså så att alla gånger där lagen spelat hemma resp borta skall räknas ihop till antal matcher. målen gjorda hemma (hmal) skall räknas ihop med bortamål (bmal) för respektive lag. lika så poängen hemma resp borta och vinster/oavgjorda/förluster.
Jag har ju lyckats få ihop alla lagens hemmamatcher till en serietabell och bortamatcher till en. Men att få den "riktiga" får jag inte ihop. Jag har väl fått totalblockad i skallen....
Uppskattas att du försöker hjälpa iaf!
Re: Har bara EN tabell i databasen
OK, mitt idrottsintresse är lågt så en "totaltabell" säger mig ingenting. Jag har tittat på ditt exempel ovan men får det inte att gå ihop. Kan du förklara hur du får fram siffrorna?
Det skulle underlätta om du:
Kermit skrev:
...
hlag |blag|hmal|bmal|hpoang|bpoang|v|o|f| ...
blåvitt | aik |5 |1 |2 |0 |1|0|0|
aik |djurg.|2 |3 |0 |2 |0|0|1|
öis |blåvitt|1 |1 |1 |1 |0|1|0|Av detta vill jag då få ut:
1 Blåvitt 2 match 1 vinst 1 oavg,0 förl,6-1, 3 poäng
2 ÖIS . 2 match 1 vinst, 1 oavg, 0 förl, 4-3, 3 poäng
...
Jag tycker det ser ut som om:
Blåvitt har spelat 2 matcher ett som hlag och ett som blag.
För hlagsmatchen gäller: 5 mål (mot 1) gav 2 poäng och vinst
För blagsmatchen gäller: 1 mål (mot 1) gav 1 poäng och oavgjort
-----------------------------------------------------------------------------------
Borde ge, tycker jag? : 6-2 gav 3 poäng 1 vinst 1 oavgjord
Varför 6-1?
öis har spelat en match som hlag:
För hlagsmatchen gäller: 1 mål (mot 1) gav 1 poäng och oavgjort
-----------------------------------------------------------------------------------
Borde ge, tycker jag? : 1-1 gav 1 poäng 1 oavgjord
Varför 4-3 och 3 poäng? :q :q :q
Så länge jag inte fattar vad du vill ha ut kan jag inte hjälpa dig med SQL:n.
Du har självklart rätt.
Jag summerade dessa "för hand" och såg lite "snett"
AIK i detta ex har då 1-5 och 2-3 ( om jag ser rätt) och har då
2 matcher 3-8 i målsk. och 0 poäng
Det jag vill få fram är just dessa summerade siffror av lagens mål poäng, antal matcher, målskillnad hemma resp borta.
DatabasTabellen:
hlag,blag, hmal, bmal,hpoäng,bpoäng,v,o,f
alltså:
hemmalag,bortalag,hemmamål,bortamål,
hemmapoäng,bortapoäng (dessa två ger 2 p för vinst 1 för oavgjort och 0 vid förlust) tex hemmavinst 3-2 ger hpoäng=2, bpoäng=0
v,o,f, står för vinst,oavgj,förlust(markering "1" för rätt) resultatet ovan ger då: v=1, o=0, f=0. (dessa kanske är onödiga då man kan få fram uppgifterna ur (hpoäng,bpoäng) ?
Ja, så ser det alltså ut. Men det kanske är hur lätt som helst, men jag får liksom inte det att stämma
Jag vill ha lagen sorterade efter 1:poäng. 2: målskillnad(summa av gjorda-insläppta mål)
Serien består av 8 lag.
Man kan ju lösa det med fler databastabeller, men jag tänkte att det skulle funka med en.....
Ledsen för att svar dröjt, jag har inte haft tid att sätta mig in i ditt problem.
Jag tror att du blandar ihop den tabell du vill få ut med databasens utseende. Jag är inte säker på om det går att få till en SQL-fråga på det sätt du önskar som din databas ser ut, dock kommer ett försök till dellösning nedan. Spontant får jag emellertid känslan av att du troligen skulle kunna lagra din information på ett bättre sätt i databasen, vilket skulle göra att SQL:n blev *mycket* lättare att få till.
Hur som helst, jag kallar den tabell du har för Tabell i "lösningen" nedan. Dock vågar jag inte garantera att frågan plockar ut det den ska, så kör varje delfråga för sig först och kontrollera att den verkar göra rätt innan du limmar ihop allt i en fråga.
Kermit: Det jag vill få fram är just dessa summerade siffror av lagens mål poäng, antal matcher, målskillnad hemma resp borta.
Select T.hlag, count(*) as antalMatcher, #, ¤, % From Tabell T, Tabell L
Where T.hlag =L.hlag or T.hlag = L.blag
Group by T.hlag;
#
(Select sum(H.hmal) From Tabell H
Where T.hlag = H.hlag +
Select sum(B.bmal) From Tabell B
Where T.hlag = B.blag) as hmalTot
¤
(Select sum(H.bmal) From Tabell H
Where T.hlag = H.hlag +
Select sum(B.hmal) From Tabell B
Where T.hlag = B.blag) as bmalTot
%
(Select sum(H.hpoang) From Tabell H
Where T.hlag = H.hlag +
Select sum(B.bpoang) From Tabell B
Where T.hlag = B.blag) as totPoang
Alltså, börja med att kolla att nedanstående blir antalMatcher:
Select T.hlag, count(*) as antalMatcher From Tabell T, Tabell L
Where T.hlag =L.hlag or T.hlag = L.blag
Group by T.hlag;
Sedan att du får samma svar på matchantal OCH att du får ut en korrekt summering av det lagets antal egna mål när du lägger in HELA #:
Select T.hlag, count(*) as antalMatcher,
(Select sum(H.hmal) From Tabell H
Where T.hlag = H.hlag +
Select sum(B.bmal) From Tabell B
Where T.hlag = B.blag) as hmalTot,
From Tabell T, Tabell L
Where T.hlag =L.hlag or T.hlag = L.blag
Group by T.hlag;
Och så vidare med successiva tillägg.
OM allt funkar så har du:
Tack!!
Skall testa detta och återkommer om ett tag..