zapytania typu wyświetlenie krajów, lig bądź klubów pomijam bo są proste
Zakładam: user wpisuje do szukajki `ronal*` bo zapomniał jak się nazywa słynny piłkarz i chce, aby przy okazji wyświetliła mu się narodowość znalezionych piłkarzy, ich kluby, ligi etc.
SELECT kr.kraj, l.liga, kl.klub, z.nazw, z.imie
FROM zawodnicy z
LEFT JOIN kluby kl ON kl.id_klub = z.id_klub
LEFT JOIN ligi l ON l.id_liga = kl.id_liga
LEFT JOIN kraje kr ON kr.id_kraj = l.id_kraj
WHERE z.nazw LIKE "ronal%"
przy przykładowej bazie:
-- Struktura tabeli dla `kluby`
--
CREATE TABLE `kluby` (
`id_klub` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT,
`id_liga` mediumint(8) UNSIGNED NOT NULL DEFAULT '0',
`klub` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id_klub`),
KEY `id_liga` (`id_liga`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;
--
-- Zrzut danych tabeli `kluby`
--
INSERT INTO `kluby` VALUES (1, 1, 'Klub pierwszy');
INSERT INTO `kluby` VALUES (2, 2, 'Klub drugi');
-- --------------------------------------------------------
--
-- Struktura tabeli dla `kraje`
--
CREATE TABLE `kraje` (
`id_kraj` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT,
`kraj` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id_kraj`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;
--
-- Zrzut danych tabeli `kraje`
--
INSERT INTO `kraje` VALUES (1, 'Kraj pierwszy');
INSERT INTO `kraje` VALUES (2, 'Kraj drugi');
-- --------------------------------------------------------
--
-- Struktura tabeli dla `ligi`
--
CREATE TABLE `ligi` (
`id_liga` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT,
`id_kraj` mediumint(8) UNSIGNED NOT NULL DEFAULT '0',
`liga` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id_liga`),
KEY `id_kraj` (`id_kraj`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;
--
-- Zrzut danych tabeli `ligi`
--
INSERT INTO `ligi` VALUES (1, 1, 'Liga pierwsza');
INSERT INTO `ligi` VALUES (2, 2, 'Liga druga');
-- --------------------------------------------------------
--
-- Struktura tabeli dla `zawodnicy`
--
CREATE TABLE `zawodnicy` (
`id_zawodnik` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT,
`id_klub` mediumint(8) UNSIGNED NOT NULL DEFAULT '0',
`nazw` varchar(255) NOT NULL DEFAULT '',
`imie` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id_zawodnik`),
KEY `zawodnik` (`nazw`),
KEY `id_klub` (`id_klub`)
) TYPE=MyISAM AUTO_INCREMENT=5 ;
--
-- Zrzut danych tabeli `zawodnicy`
--
INSERT INTO `zawodnicy` VALUES (2, 1, 'ronaldo', 'yaro');
INSERT INTO `zawodnicy` VALUES (3, 1, 'RoNaLdINo', 'donek');
INSERT INTO `zawodnicy` VALUES (4, 2, 'Ronaldo', 'Cristiano');
daje rezultat:
kraj | liga | klub | nazw | imie
--------------------------------------------------
Kraj pierwszy Liga pierwsza Klub pierwszy RoNaLdINo donek
Kraj pierwszy Liga pierwsza Klub pierwszy ronaldo yaro
Kraj drugi Liga druga Klub drugi Ronaldo Cristiano
możesz sobie jeszcze dodać do zapytania sortowanie czy stronnicowanie

Pozdrawiam!