21. august 2003 - 13:36Der er
4 kommentarer og 1 løsning
Tælle sammen på tværs af tabeller (mysql)
Hej...
Jeg har 11 tabeller fra bdk_stats9394 til bdk_stats0304. Strukturen er den samme i alle tabeller:
spid char(255) NOT NULL default '', fnavn char(255) NOT NULL default '', enavn char(255) NOT NULL default '', jersey int(255) NOT NULL default '0', k int(255) NOT NULL default '0', goa int(255) NOT NULL default '0', ass int(255) NOT NULL default '0', pts int(255) NOT NULL default '0', ppgo int(255) NOT NULL default '0', shgo int(255) NOT NULL default '0', pim int(255) NOT NULL default '0', engo int(48) NOT NULL default '0'
Det jeg så gerne vil have talt sammen er felterne k, goa, ass, pts og pim. Det andet kan være ligemeget. SPID angiver (som i sikkert allerede har gættet) det pågældende id så den må der ikke pilles ved...
Men hvordan går man lige?
hvis nu bdk_stats9394 er: spid | k | goa | ass | pts | pim 1 | 3 | 24 | 10 | 34 | 78
og 9495 er 1 | 5 | 10 | 12 | 22 | 12
så skal det sammentalte sættes ind i en tabel (bdk_alltime) først skal den tjekke om spid'et allerede er i, hvis det er skal den bruge update, hvis ikke skal den bruge insert... i bdk_alltime skal det til sidst se sådan her ud: 1 | 8 | 34 | 22 | 56 | 90
Du skal bruge Sql-kommandoerne SELECT * FROM >tabelnavn< WHERE >betingelse< som start til at udvælge dine data og derefter kommandoer til at joine dine resultater, men hvis du intet kendskab har til SQL, er det svært at forklare. Jeg kan godt bikse noget sammen men det er ikke sikkert det virker hos dig, der er lidt flere faktorer der skal med. Det jeg kan lave er selve SQL kaldene, Sammenkoblingen med dit program skal du selv lave. Jeg vil faktisk anbefale at du køber et billighæfte om SQL så du er lidt med på snakken. Så vidt jeg kan se vil du få flere indlejrede kommandoer, når den både skal tælle sammen og kontrollere om din id allerede eksisterer. måske to programgrupper der ligner hinanden, men hvor den vælger hvilken den skal bruge når den har kontrolleret id. En komplet SQLløsning har jeg ikke lige tid til at bikse sammen nu, men prøv at kigge i det hæfte jeg anbefalede (ca 60 kr), eller lån det på biblioteket.
hej, det er noget af det mest besværlige der findes, har ihverfald ikke fundet en gylden måde at gøre det på.
følgede SQL vil dog kunne hjælpe dig (føj selv de manglende felter og tabeller til)
select t1.spid+t2.spid as spid, t1.k+t2.k as k from (select sum(spid) as spid,sum(k) as k from bdk_stats9394) as t1, (select sum(spid) as spid,sum(k) as k from bdk_stats9395) as t2
CREATE temporary TABLE tmp_union TYPE=HEAP SELECT * FROM `test3` UNION all SELECT * FROM `test2` UNION all SELECT * FROM test1;
SELECT id,sum(f1),sum(f2) from tmp_union group by id;
vis hvad du behøver og
drop table tmp_union;
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.