Avatar billede snie97 Nybegynder
21. august 2003 - 13:36 Der 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

nogen der kan bikse sådan noget sammen?
Avatar billede ejoergensen Nybegynder
21. august 2003 - 13:40 #1
hvad med at bruge nogen sql-statements?
Avatar billede snie97 Nybegynder
21. august 2003 - 13:45 #2
hmm... på bar bund.. derfor dette topic
Avatar billede ejoergensen Nybegynder
22. august 2003 - 12:54 #3
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.
Avatar billede marla05 Nybegynder
26. august 2003 - 16:29 #4
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
Avatar billede ponte Nybegynder
20. september 2003 - 00:48 #5
her er et forslag

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;
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester