Jednoduchá evidence šachových zápasů

Byl jsem požádán o sestavení jednoho SQL dotazu, který by vypisoval některé základní statistiky.

  1. CREATE TABLE teamy(
  2. id INTEGER AUTO_INCREMENT,
  3. nazev VARCHAR(64) NOT NULL,
  4. liga TINYINT,
  5. PRIMARY KEY (id)
  6. ) ENGINE = innodb;
  7. CREATE TABLE zapasy (
  8. id INTEGER AUTO_INCREMENT,
  9. datumzapasu DATETIME NOT NULL,
  10. liga TINYINT,
  11. kolo TINYINT,
  12. teama INTEGER NOT NULL,
  13. teamb INTEGER NOT NULL,
  14. bodya TINYINT DEFAULT 0,
  15. bodyb TINYINT DEFAULT 0,
  16. PRIMARY KEY (id),
  17. FOREIGN KEY (teama) REFERENCES teamy(id),
  18. FOREIGN KEY (teamb) REFERENCES teamy(id)
  19. ) ENGINE = innodb;

A teď některé dotazy:

Obligátní SELECT * FROM teamy

1TH Junior B. Bystrica "B"4
2SK Veža CVC B. Bystrica "B"4
3SK Slovan Hrnc. Žaluzany4
4SK Vinica4
5SK Garde CVC Detva4
6PSK B. Bystrica "B"4
7SO Mestské lesy Kremnica4
8Slovan Sliač4
9SK Bučina Zvolen4
10SO CVC Brezno4

Obligátní SELECT * FROM zapasy

ID Datum Liga Kolo Team A Team B Body A Body B
12006-10-29 14:30:00411253
32006-10-08 09:00:00413100
42006-10-08 09:00:00412700
52006-10-08 09:00:00414800
62006-10-08 09:00:00415900
72006-10-08 09:00:004161000
82006-11-05 09:00:004211000
92006-11-05 09:00:00429600
102006-11-05 09:00:00428500
112006-11-05 09:00:00427400
122006-11-05 09:00:00423200
132006-11-19 09:00:00432100
142006-11-19 09:00:00434300
152006-11-19 09:00:00435700
162006-11-19 09:00:00436800
172006-11-19 09:00:004310900
182006-12-10 09:00:00441900
192006-12-10 09:00:004481000
202006-12-10 09:00:00447600
212006-12-10 09:00:00443500
222006-12-10 09:00:00442400
232007-01-21 09:00:00454100
242007-01-21 09:00:00455200
252007-01-21 09:00:00456300
262007-01-21 09:00:004510700
272007-01-21 09:00:00459800
282007-02-11 09:00:00461800
292007-02-11 09:00:00467900
302007-02-11 09:00:004631000
312007-02-11 09:00:00462600
322007-02-11 09:00:00464500
332007-02-25 09:00:00475100
342007-02-25 09:00:00476400
352007-02-25 09:00:004710200
362007-02-25 09:00:00479300
372007-02-25 09:00:00478700
382007-03-11 09:00:00481700
392007-03-11 09:00:00483800
402007-03-11 09:00:00482900
412007-03-11 09:00:004841000
422007-03-11 09:00:00485600
432007-04-01 09:00:00496100
442007-04-01 09:00:004910500
452007-04-01 09:00:00499400
462007-04-01 09:00:00498200
472007-04-01 09:00:00497300

Ošklivý a nicneříkající výstup že? Lépe bu bylo, kdybychom viděli např. seznam všech zápasů z roku 2006 čtvrté ligy. Vedle jména teamu bude i počet bodů dosažený v zápase.

  1. SELECT ta.nazev AS nazeva, z.bodya, tb.nazev AS nazevb, z.bodyb
  2. FROM zapasy AS z
  3. INNER JOIN teamy AS ta ON z.teama = ta.id
  4. INNER JOIN teamy AS tb ON z.teamb = tb.id
  5. WHERE z.liga = 4 AND YEAR(z.datumzapasu) = '2006';
Team A Body Team B Body
TH Junior B. Bystrica "B"5SK Veža CVC B. Bystrica "B"3
TH Junior B. Bystrica "B"0SO CVC Brezno0
TH Junior B. Bystrica "B"0SK Bučina Zvolen0
SK Veža CVC B. Bystrica "B"0SO Mestské lesy Kremnica0
SK Veža CVC B. Bystrica "B"0TH Junior B. Bystrica "B"0
SK Veža CVC B. Bystrica "B"0SK Vinica0
SK Slovan Hrnc. Žaluzany0TH Junior B. Bystrica "B"0
SK Slovan Hrnc. Žaluzany0SK Veža CVC B. Bystrica "B"0
SK Slovan Hrnc. Žaluzany0SK Garde CVC Detva0
SK Vinica0Slovan Sliač0
SK Vinica0SK Slovan Hrnc. Žaluzany0
SK Garde CVC Detva0SK Bučina Zvolen0
SK Garde CVC Detva0SO Mestské lesy Kremnica0
PSK B. Bystrica "B"0SO CVC Brezno0
PSK B. Bystrica "B"0Slovan Sliač0
SO Mestské lesy Kremnica0SK Vinica0
SO Mestské lesy Kremnica0PSK B. Bystrica "B"0
Slovan Sliač0SK Garde CVC Detva0
Slovan Sliač0SO CVC Brezno0
SK Bučina Zvolen0PSK B. Bystrica "B"0
SO CVC Brezno0SK Bučina Zvolen0
Tags: