MySQL как получить ID родительского поля у которого в разных строках есть значение?
Есть Таблица "Поездки"
ID | TITLE
1 | ТЕСТОВАЯ
Есть Таблица "Поездки_Точки"
ID | ПОЕЗДКИ_ID | FROM | TO
1 | 1 | МСК | СПБ
2 | 1 | СПБ | КРД
3 | 1 | КРД | СОЧИ
Как написать правильно запрос, который сможет получать из таблицы "Поездки_Точки" уникальные ПОЕЗДКИ_ID, у которых есть совпадение по FROM и TO.
Например:
Найти ПОЕЗДКИ_ID , где есть FROM МСК и TO КРД =.> Результат запроса "1"
Найти ПОЕЗДКИ_ID , где есть FROM МСК и TO СОЧИ =.> Результат запроса "1"
То есть получить ID родителя, где у двух разных записей в таблице совпадают поля по условиям?
а зачем вы первую таблицу привели, если в запросах она никак не фигурирует?
Не используйте кириллицу в названиях колонок, это где-нибудь вылезет боком.
В подготовке данных часто желательно учесть и негативные сценарии.
Местоположения лучше бы вынести в отдельную таблицу, а в целевой таблице использовать ID этих местоположений.
SELECT `travel_id`
FROM `travel_point`
WHERE `from`='МСК' OR `to`='СОЧИ'
GROUP BY `travel_id`
HAVING COUNT(`id`)>1
Но это даст ложные срабатывания для некоторых случаев, когда какой-то пункт в поездке был дважды. Например, Омск-Сочи-Спб-Сочи тоже подойдёт под этот запрос.
Тогда надо использовать JOIN:
SELECT `travel_id`
FROM `travel_point` AS `t1` JOIN `travel_point` as `t2` USING (`travel_id`)
WHERE `t1`.`from`='СПБ' AND `t2`.`to`='СОЧИ'
GROUP BY `travel_id`