CREATE TABLE IF NOT EXISTS `e327t_bl_players` ( `id` int(11) NOT NULL AUTO_INCREMENT, `first_name` varchar(255) NOT NULL DEFAULT '', `last_name` varchar(255) NOT NULL DEFAULT '', `nick` varchar(255) NOT NULL DEFAULT '', `about` text NOT NULL, `position_id` int(11) NOT NULL DEFAULT '0', `def_img` int(11) NOT NULL DEFAULT '0', `team_id` int(11) NOT NULL DEFAULT '0', `usr_id` int(11) NOT NULL DEFAULT '0', `country_id` int(11) NOT NULL DEFAULT '0', `registered` char(1) NOT NULL DEFAULT '0', `created_by` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=53 ; / Tabela definiuje zawodników / INSERT INTO `e327t_bl_players` (`id`, `first_name`, `last_name`, `nick`, `about`, `position_id`, `def_img`, `team_id`, `usr_id`, `country_id`, `registered`, `created_by`) VALUES (1, 'Daniel', 'Danielski', '', '', 5, 0, 14, 0, 176, '0', 0), (2, 'Filip', 'Kowalski', '', '', 5, 0, 14, 0, 176, '0', 0), (3, 'Przemysław', 'Nowak', '', '', 4, 0, 14, 0, 176, '0', 0); CREATE TABLE IF NOT EXISTS `e327t_bl_extra_filds` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL DEFAULT '', `published` char(1) NOT NULL DEFAULT '1', `type` char(1) NOT NULL DEFAULT '0', `ordering` int(11) NOT NULL DEFAULT '0', `e_table_view` char(1) NOT NULL DEFAULT '0', `field_type` char(1) NOT NULL DEFAULT '0', `reg_exist` char(1) NOT NULL DEFAULT '0', `reg_require` char(1) NOT NULL DEFAULT '0', `fdisplay` char(1) NOT NULL DEFAULT '1', `season_related` varchar(1) NOT NULL DEFAULT '0', `faccess` varchar(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ; / Tabela zawiera nazwy cech opisujących zawodnika / INSERT INTO `e327t_bl_extra_filds` (`id`, `name`, `published`, `type`, `ordering`, `e_table_view`, `field_type`, `reg_exist`, `reg_require`, `fdisplay`, `season_related`, `faccess`) VALUES (1, 'Data urodzenia', '1', '0', 4, '0', '0', '0', '0', '1', '0', '0'), (2, 'Wzrost / Waga', '1', '0', 6, '0', '0', '0', '0', '1', '0', '0'), (3, 'Poprzedni klub', '1', '0', 7, '0', '0', '0', '0', '1', '0', '0'), (4, 'Miejsce urodzenia', '1', '0', 5, '0', '0', '0', '0', '1', '0', '0'), (5, 'Pozycja', '1', '0', 1, '1', '3', '0', '0', '1', '0', '0'), (6, 'Kadra pierwszego zespołu', '0', '0', 2, '0', '1', '0', '0', '1', '0', '0'), (7, 'Numer na koszulce', '1', '0', 3, '0', '0', '0', '0', '1', '0', '0'); CREATE TABLE IF NOT EXISTS `e327t_bl_extra_values` ( `f_id` int(11) NOT NULL DEFAULT '0', `uid` int(11) NOT NULL DEFAULT '0', `fvalue` varchar(255) NOT NULL DEFAULT '', `fvalue_text` text NOT NULL, `season_id` int(11) NOT NULL, PRIMARY KEY (`f_id`,`uid`,`season_id`), KEY `uid` (`uid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; / Tabela zawiera wartości cech opisujące zawodnika / INSERT INTO `e327t_bl_extra_values` (`f_id`, `uid`, `fvalue`, `fvalue_text`, `season_id`) VALUES (1, 1, '18.12.1982 r.', '', 0), (1, 2, '04.09.1991 r.', '', 0), (1, 3, '15.12.1993 r.', '', 0), (2, 1, '184/83', '', 0), (2, 2, '185/72', '', 0), (2, 3, '180/66', '', 0), (3, 1, 'KS Pcimowo Wielkie', '', 0), (3, 2, 'Róża Staw', '', 0), (3, 3, 'SMS Łódź', '', 0), (4, 1, 'Ostrów Wlkp.', '', 0), (4, 2, 'Tomaszów Mazowiecki', '', 0), (4, 3, 'Wrocław', '', 0), (5, 1, '2', '', 0), (5, 2, '4', '', 0), (5, 3, '1', '', 0), (6, 1, '1', '', 0), (6, 2, '1', '', 0), (6, 3, '1', '', 0), (7, 1, '2', '', 0), (7, 2, '13', '', 0), (7, 3, '3', '', 0); CREATE TABLE IF NOT EXISTS `e327t_bl_extra_select` ( `fid` int(11) NOT NULL DEFAULT '0', `sel_value` varchar(255) NOT NULL DEFAULT '', `id` int(11) NOT NULL AUTO_INCREMENT, `eordering` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `fid` (`fid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; / Tabela zawiera wybór tych cech które są wybierane z listy / INSERT INTO `e327t_bl_extra_select` (`fid`, `sel_value`, `id`, `eordering`) VALUES (5, 'Bramkarz', 1, 0), (5, 'Obrońca', 2, 1), (5, 'Pomocnik', 3, 2), (5, 'Napastnik', 4, 3);
Przy zapytaniu:
SELECT e327t_bl_players.id, e327t_bl_players.first_name, e327t_bl_players.last_name, e327t_bl_extra_values.fvalue, e327t_bl_extra_select.sel_value FROM e327t_bl_players INNER JOIN e327t_bl_extra_values ON e327t_bl_players.id = e327t_bl_extra_values.uid INNER JOIN e327t_bl_extra_select ON e327t_bl_extra_values.fvalue = e327t_bl_extra_select.id WHERE e327t_bl_players.team_id = 14 AND e327t_bl_extra_values.f_id = 5
Otrzymuję wynik w postaci: Imię | Nazwisko | Pozycja
A chciałbym otrzymać: Imię | Nazwisko | Pozycja | Numer na koszulce |
Nie potrafię tak złączyć tabel aby odpowiednio powiązało rekordy. Zawsze otrzymuję dużo, za dużo rekordów w wyniku.
Proszę o pomoc, bo już opdam z sił.
Pozdrawiam
Tomek