zastanawaiłęm sie, czy nie dać jakiegoś mądrzejeszgo tematu, ale chyba taki jest najbardziej obrazowy.
Akcja toczy się na MySQL, gdzie mamy 2 tabele, produkty i kategorie.
Każdy produkt, poza id i nazwą, ma informacje o tym, do jakiej kategorii należy, oraz 1 pole dodatkowe - flagę, mogąć przyjmować wartość 0 lub 1.
Zadanie polega na tym, by wyświetlić listę kategorii, wraz z 2 liczbami dotyczącymi ilości produktów należących do tej kategorii, osobno jednak licząc produkty o fladze 0, a osobno - 1.
Przykład struktury bazy:
Kod
# Struktura tabeli dla `kategorie`
CREATE TABLE kategorie (
id int(11) NOT NULL auto_increment,
nazwa varchar(100) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;
# Zrzut danych tabeli `kategorie`
INSERT INTO kategorie VALUES (1, 'kategoria 1');
INSERT INTO kategorie VALUES (2, 'kategoria 2');
INSERT INTO kategorie VALUES (3, 'kategoria 3');
# --------------------------------------------------------
# Struktura tabeli dla `produkty`
CREATE TABLE produkty (
id int(11) NOT NULL auto_increment,
nazwa varchar(100) NOT NULL default '',
kat_id int(11) NOT NULL default '0',
flaga tinyint(4) NOT NULL default '0',
PRIMARY KEY (id),
KEY kat_id (kat_id,flaga)
) TYPE=MyISAM;
# Zrzut danych tabeli `produkty`
INSERT INTO produkty VALUES (1, 'produkt 1', 1, 0);
INSERT INTO produkty VALUES (2, 'produkt 2', 1, 0);
INSERT INTO produkty VALUES (3, 'produkt 3', 1, 1);
INSERT INTO produkty VALUES (4, 'produkt 4', 2, 0);
CREATE TABLE kategorie (
id int(11) NOT NULL auto_increment,
nazwa varchar(100) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;
# Zrzut danych tabeli `kategorie`
INSERT INTO kategorie VALUES (1, 'kategoria 1');
INSERT INTO kategorie VALUES (2, 'kategoria 2');
INSERT INTO kategorie VALUES (3, 'kategoria 3');
# --------------------------------------------------------
# Struktura tabeli dla `produkty`
CREATE TABLE produkty (
id int(11) NOT NULL auto_increment,
nazwa varchar(100) NOT NULL default '',
kat_id int(11) NOT NULL default '0',
flaga tinyint(4) NOT NULL default '0',
PRIMARY KEY (id),
KEY kat_id (kat_id,flaga)
) TYPE=MyISAM;
# Zrzut danych tabeli `produkty`
INSERT INTO produkty VALUES (1, 'produkt 1', 1, 0);
INSERT INTO produkty VALUES (2, 'produkt 2', 1, 0);
INSERT INTO produkty VALUES (3, 'produkt 3', 1, 1);
INSERT INTO produkty VALUES (4, 'produkt 4', 2, 0);
Moim marzeniem

Kod
|id | nazwa | produkt_flag_0 | produkt_flag_1 |
|---+---------------+-------------------+------------------|
| 1 | kategoria 1 | 2 | 1 |
|---+---------------+-------------------+------------------|
| 2 | kategoria 2 | 1 | 0 |
|---+---------------+-------------------+------------------|
| 3 | kategoria 3 | 0 | 0 |
------------------------------------------------------------
|---+---------------+-------------------+------------------|
| 1 | kategoria 1 | 2 | 1 |
|---+---------------+-------------------+------------------|
| 2 | kategoria 2 | 1 | 0 |
|---+---------------+-------------------+------------------|
| 3 | kategoria 3 | 0 | 0 |
------------------------------------------------------------
W pierwszej chwili zadanie wydaje się banalne. Ale ... chyba takie nie jest. A zresztą przekonajcie sie sami
