схема базы данных слежения за судами - PullRequest
0 голосов
/ 26 августа 2011

У меня есть схема базы данных отслеживания судов со следующей таблицей для schdual

CREATE TABLE IF NOT EXISTS `string_ports` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `string_id` int(10) NOT NULL,
  `port_id` int(11) NOT NULL,
  `port_order` int(10) NOT NULL,
  `arriv_date` datetime NOT NULL,
  `dep_date` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 CHECKSUM=1 DELAY_KEY_WRITE=1 AUTO_INCREMENT=1 ;

string_id - это идентификатор строки, например, у меня есть 3 строки. Линия 1 идет от порта A к B и Cна D Линия 2 идет от порта A к C на D Линия 3 идет от порта A к Z на B

Мне нужен SQL-запрос, если я хочу искать линии, идущие от порта A к порту C, либо напрямуюили проходя через другие порты

, поэтому SQL должен сказать select string из string_ports, где порт C port_order> порт A, порядок портов, и они находятся в одной строке

как я могу написать этот SQl?

1 Ответ

0 голосов
/ 26 августа 2011

Попробуйте:

select a.`string_id`
from `string_ports` as a
inner join `string_ports` as c
on a.`string_id` = c.`string_id`
and a.`port_id` = 1 --whatever port_id A is
and c.`port_id` = 3 --whatever port_id C is
and a.`port_order` < c.`port_order`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...