Использование MySQL:
У меня есть таблица 'city': id, 'name', 'serve' содержит:
'1', 'Athens', 'Athens, Etowah, Madisonville'
'2', 'Etowah', 'Etowah, Athens, Madisonville, Niota'
'3', 'Madisonville', 'Madisonville, Niota, Athens, Etowah'
'4', 'Soddy Daisy', 'Soddy Daisy, Decatur, Graysville'
'5', 'Signal Mountain', 'Signal Mountain, Walden, Jasper, Kimball'
У меня есть таблица 'zipcodes': id, 'zipcode', 'cityname' содержит:
'1','00000','Athens'
'2', '00001', 'Dayton'
'3', '00002', 'Soddy Daisy'
Таким образом, в городе «сервировка» - это разделенная запятыми строка областей, окружающих «название» крупного города, начиная с крупного города.
Я могу получить список из своей базы данных, используя это утверждение:
SELECT serving FROM `city` WHERE serving LIKE '%Athens%'
То, что я пытаюсь получить, - это название главного города из списка городов, где название города НЕ в обслуживании. Главный бонус, если он вернул список, в котором «название города» имеет приоритет по позиции в строке. Изначально цель состояла в том, чтобы убедиться, что каждое «имя города» в почтовых индексах указано в поле «Обслуживающий город».
Требуемый выходной пример 1017 * Бонус; Затем, когда я обнаружил «00000» Афины (в порции): Афины, Этова, Мэдисонвилль
Я попытался:
SELECT z.cityname FROM zipcodes z
WHERE z.cityname NOT IN (
SELECT c.serving FROM city c
WHERE c.serving LIKE CONCAT('''%',z.cityname,'%'''))
Но в городе, «обслуживающему», не найдено ни одного совпадения. list.
Я попытался отформатировать строку по-другому, но я получаю ошибки.
SELECT z.cityname FROM zipcodes z
WHERE z.cityname NOT IN (
SELECT c.serving FROM city c
WHERE c.serving LIKE '%' + z.cityname + '%')
Так что я полагаю, что это в моей строке для совпадения с подстановочным знаком, где это не удается. Так что любые советы будут с благодарностью.
Мой опыт работы с базами данных в основном MS SQL, и поиск здесь, и Google не отображает то, что я ищу, почему мой SELECT не работает.
Спасибо!
Редактировать: добавлено больше образцов для таблиц данных