Я создал такую таблицу для проекта индийских железных дорог:
CREATE TABLE IF NOT EXISTS `dennis` (
`trid` varchar(50) NOT NULL,
`place` varchar(50) NOT NULL,
`si` varchar(50) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
тогда я вставил строки таким образом:
INSERT INTO `dennis` (`trid`, `place`, `si`) VALUES
('100', 'cochi', '3'),
('300', 'cochi', '1'),
('100', 'mumbai', '1'),
('100', 'bangalore', '2'),
('300', 'bangalore', '2'),
('300', 'mumbai', '3'),
('200', 'hyderabad', '1'),
('400', 'trivandrum', '1'),
('200', 'bangalore', '2'),
('200', 'trivandrum', '3'),
('400', 'bangalore', '2'),
('400', 'hyderabad', '3');
Моя проблема в том, что когда я выбираю начальную станцию как Бангалор и пункт назначения как Мумбаи, я получаю все номера поездов, потому что Бангалор существует для всех поездов, т.е. поезд, но Мумбаи существует только для 100 и 300.
Мне нужен запрос, который может вернуть только те триды, у которых есть и Мумбаи, и Бангалор. Также си, то есть серийный номер бангалора должен быть меньше, чем си из Мумбаи.
Я использовал этот запрос, но, похоже, он возвращает все записи
SELECT DISTINCT trid FROM dennis WHERE place ='mumbai' OR place='bangalore'