Witam, mam autobusy które kursują z przystanku A do B i z C do D. Wyszukiwanie takich połączeń nie stanowi problemu. Problemem staje się już jak chcę dojechać z A do D. Wtedy trzeba odszukać miejsce X które będzie miejscem przesiadki lub przesiadek. Niestety nie mam prostego sposobu który mi to w tym pomoże. Na samym początku chciałbym pokazać strukturę bazy danych:
oraz przykładowe dane:
mam nadzieje, że to pomoże w weryfikacji bazy.
poproszę sugestie odnośnie tego wyszukiwania
Kod:
--
-- Struktura tabeli dla `mzk_cms_accounts`
--
CREATE TABLE `mzk_cms_accounts` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`login` varchar(30) collate utf8_polish_ci default NULL,
`pass` char(32) collate utf8_polish_ci default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `login` (`login`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=2 ;
-- --------------------------------------------------------
--
-- Struktura tabeli dla `mzk_cms_autobusy`
--
CREATE TABLE `mzk_cms_autobusy` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`alias` varchar(100) collate utf8_polish_ci default NULL COMMENT 'unikalny alias autobusu',
`nazwa` varchar(100) collate utf8_polish_ci default NULL COMMENT 'nazwa autobusu, np.: numer',
`opis` text collate utf8_polish_ci COMMENT 'opis autobusu',
PRIMARY KEY (`id`),
UNIQUE KEY `UNIQUE` (`alias`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci COMMENT='Tabela z autobusami' AUTO_INCREMENT=26 ;
-- --------------------------------------------------------
--
-- Struktura tabeli dla `mzk_cms_godziny`
--
CREATE TABLE `mzk_cms_godziny` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`oid` smallint(5) unsigned default '0' COMMENT 'id odjazdu',
`pid` smallint(5) unsigned default '0' COMMENT 'id przystanku',
`godzina` mediumint(8) unsigned default '0',
`time` time NOT NULL,
PRIMARY KEY (`id`),
KEY `ODJAZDY` (`oid`),
KEY `PRZYSTANKI` (`pid`),
KEY `Godzina` (`godzina`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci COMMENT='godzina przyjazdu na przystanek' AUTO_INCREMENT=16031 ;
-- --------------------------------------------------------
--
-- Struktura tabeli dla `mzk_cms_kierunki`
--
CREATE TABLE `mzk_cms_kierunki` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`alias` varchar(100) collate utf8_polish_ci default NULL COMMENT 'alias kursu',
`nazwa` varchar(100) collate utf8_polish_ci default NULL COMMENT 'nazwa kursu',
PRIMARY KEY (`id`),
UNIQUE KEY `alias` (`alias`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci COMMENT='kierunki jazdy' AUTO_INCREMENT=30 ;
-- --------------------------------------------------------
--
-- Struktura tabeli dla `mzk_cms_kursy`
--
CREATE TABLE `mzk_cms_kursy` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`aid` smallint(5) unsigned default '0' COMMENT 'id autobusu',
`kid` smallint(5) unsigned default '0' COMMENT 'id kierunku',
`przystanki` text collate utf8_polish_ci,
`waznosc` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `AUTOBUSY` (`aid`),
KEY `KIERUNKI` (`kid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci COMMENT='kursy autobusów' AUTO_INCREMENT=50 ;
-- --------------------------------------------------------
--
-- Struktura tabeli dla `mzk_cms_legenda`
--
CREATE TABLE `mzk_cms_legenda` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`skrot` varchar(5) collate utf8_polish_ci default NULL,
`opis` text collate utf8_polish_ci,
PRIMARY KEY (`id`),
UNIQUE KEY `skrot` (`skrot`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=16 ;
-- --------------------------------------------------------
--
-- Struktura tabeli dla `mzk_cms_legenda_odjazdy`
--
CREATE TABLE `mzk_cms_legenda_odjazdy` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`oid` smallint(5) unsigned default '0' COMMENT 'id odjazdu',
`lid` smallint(5) unsigned default '0' COMMENT 'id skrótu w legendzie',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=1402 ;
-- --------------------------------------------------------
--
-- Struktura tabeli dla `mzk_cms_odjazdy`
--
CREATE TABLE `mzk_cms_odjazdy` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`nazwa` varchar(100) collate utf8_polish_ci default NULL,
`tid` smallint(5) unsigned default '0' COMMENT 'id trasy',
`dni` set('1','2','3','4','5','6','7') collate utf8_polish_ci NOT NULL,
PRIMARY KEY (`id`),
KEY `TRASY` (`tid`),
KEY `DNI` (`dni`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci COMMENT='Odjazdy autobusów' AUTO_INCREMENT=876 ;
-- --------------------------------------------------------
--
-- Struktura tabeli dla `mzk_cms_przystanki`
--
CREATE TABLE `mzk_cms_przystanki` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`alias` varchar(100) collate utf8_polish_ci default NULL COMMENT 'lias przystanku',
`nazwa` varchar(100) collate utf8_polish_ci default NULL COMMENT 'nazwa przystanku',
`x` float unsigned default NULL COMMENT 'szerokość geograficzna przystanku',
`y` float unsigned default NULL COMMENT 'długość geograficzna przystanku',
PRIMARY KEY (`id`),
UNIQUE KEY `UNIQUE` (`alias`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci COMMENT='przystanki autobusowe' AUTO_INCREMENT=235 ;
-- --------------------------------------------------------
--
-- Struktura tabeli dla `mzk_cms_settings`
--
CREATE TABLE `mzk_cms_settings` (
`cmsTitle` text collate utf8_polish_ci NOT NULL,
`cmsKeywords` text collate utf8_polish_ci NOT NULL,
`cmsDescription` text collate utf8_polish_ci NOT NULL,
`cmsURLPage` text collate utf8_polish_ci NOT NULL,
`cmsTemplate` text collate utf8_polish_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
-- --------------------------------------------------------
--
-- Struktura tabeli dla `mzk_cms_trasy`
--
CREATE TABLE `mzk_cms_trasy` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`kid` smallint(5) unsigned default '0' COMMENT 'id kursu',
`przystanki` text collate utf8_polish_ci COMMENT 'przystanki przez które jeżdżą autobusy w formie |1|2|3|',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci COMMENT='trasy, którymi jedzie autobus' AUTO_INCREMENT=237 ;
oraz przykładowe dane:
Kod:
--
-- Zrzut danych tabeli `mzk_cms_accounts`
--
INSERT INTO `mzk_cms_accounts` (`id`, `login`, `pass`) VALUES
(1, 'admin', '21232f297a57a5a743894a0e4a801fc3');
--
-- Zrzut danych tabeli `mzk_cms_autobusy`
--
INSERT INTO `mzk_cms_autobusy` (`id`, `alias`, `nazwa`, `opis`) VALUES
(1, '4', '4', NULL),
(2, '7', '7', NULL),
(3, '2', '2', NULL),
(4, '8', '8', NULL),
(5, '46', '46', NULL)
--
-- Zrzut danych tabeli `mzk_cms_godziny`
--
INSERT INTO `mzk_cms_godziny` (`id`, `oid`, `pid`, `godzina`, `time`) VALUES
(1, 1, 6, 27000, '12:00:00'),
(2, 1, 8, 27120, '00:00:00'),
(3, 1, 9, 27180, '00:00:00'),
(4, 1, 10, 27240, '00:00:00'),
(5, 1, 11, 27360, '00:00:00')
--
-- Zrzut danych tabeli `mzk_cms_kierunki`
--
INSERT INTO `mzk_cms_kierunki` (`id`, `alias`, `nazwa`) VALUES
(1, 'os-zasole-ii-zasole-petla-stare-stawy-spolem', 'Os. Zasole II / Zasole Pętla / Stare Stawy / Społem'),
(2, 'zaklady-chemiczne-dworzec-fabryczny', 'Zakłady Chemiczne / Dworzec Fabryczny'),
(3, 'stare-stawy', 'Stare Stawy'),
(4, 'zaklady-chemiczne', 'Zakłady Chemiczne'),
(5, 'zaklady-chemiczne-dwory', 'Zakłady Chemiczne / Dwory')
--
-- Zrzut danych tabeli `mzk_cms_kursy`
--
INSERT INTO `mzk_cms_kursy` (`id`, `aid`, `kid`, `przystanki`, `waznosc`) VALUES
(1, 1, 1, '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27', '2011-08-20 15:40:42'),
(2, 1, 2, '23,22,21,20,19,18,17,16,15,28,14,29,30,12,11,10,9,8,7,6,5,31,4,3,2,1', '2011-08-20 16:52:42'),
(3, 2, 3, '16,32,14,29,33,22,23', '2011-08-21 09:01:14'),
(4, 2, 4, '6,5,34,35,33,22,23', '2011-08-21 09:02:47'),
(5, 3, 5, '16,17,18,19,21,22,23,22,33,35,34,5,6,36,7,37,38', '2011-08-21 09:37:29')
--
-- Zrzut danych tabeli `mzk_cms_legenda`
--
INSERT INTO `mzk_cms_legenda` (`id`, `skrot`, `opis`) VALUES
(1, 'x', 'kurs w dni robocze'),
(2, 'l', 'kursuje wyłącznie w dni nauki szkolnej'),
(3, 'z', 'kursuje w soboty'),
(4, '+', 'kursuje w niedziele'),
(5, 'm', 'nie kursuje 24.12')
--
-- Zrzut danych tabeli `mzk_cms_legenda_odjazdy`
--
INSERT INTO `mzk_cms_legenda_odjazdy` (`id`, `oid`, `lid`) VALUES
(1, 1, 1),
(2, 1, 2),
(3, 2, 1),
(4, 3, 3),
(5, 3, 4)
--
-- Zrzut danych tabeli `mzk_cms_odjazdy`
--
INSERT INTO `mzk_cms_odjazdy` (`id`, `nazwa`, `tid`, `dni`) VALUES
(1, NULL, 1, '1,2,3,4,5'),
(2, NULL, 1, '1,2,3,4,5'),
(3, NULL, 1, '6,7'),
(4, NULL, 1, '6'),
(5, NULL, 1, '7')
--
-- Zrzut danych tabeli `mzk_cms_przystanki`
--
INSERT INTO `mzk_cms_przystanki` (`id`, `alias`, `nazwa`, `x`, `y`) VALUES
(1, 'dworzec-fabryczny', 'Dworzec Fabryczny', NULL, NULL),
(2, 'gazy-techniczne', 'Gazy Techniczne', NULL, NULL),
(3, 'monowice', 'Monowice', NULL, NULL),
(4, 'brama', 'Brama', NULL, NULL),
(5, 'lodowisko', 'Lodowisko', NULL, NULL)
--
-- Zrzut danych tabeli `mzk_cms_settings`
--
INSERT INTO `mzk_cms_settings` (`cmsTitle`, `cmsKeywords`, `cmsDescription`, `cmsURLPage`, `cmsTemplate`) VALUES
('tytul', 'slowa', 'opis', 'http://domena.pl/', 'tpl');
--
-- Zrzut danych tabeli `mzk_cms_trasy`
--
INSERT INTO `mzk_cms_trasy` (`id`, `kid`, `przystanki`) VALUES
(1, 1, '|6|8|9|10|11|12|13|14|15|16|17|18|19|20|'),
(2, 1, '|6|8|9|10|11|12|13|14|15|16|24|25|26|27|'),
(3, 1, '|6|8|9|10|11|12|13|14|15|16|17|18|19|21|22|23|'),
(4, 1, '|1|2|3|4|5|6|8|9|10|11|12|13|14|15|16|17|18|19|20|'),
(5, 1, '|1|2|3|4|5|6|8|9|10|11|12|13|14|15|16|17|18|19|21|22|23|')
mam nadzieje, że to pomoże w weryfikacji bazy.
poproszę sugestie odnośnie tego wyszukiwania