![]()  | 
		
Задавайте вопросы, мы ответим
Вы не зашли.
Знатоки, помогите плиз запрос составить.
Есть таблица с городами:
----------------------
 id | title 
----------------------
 1  | Москва 
----------------------
 2  | Казань 
----------------------
 3  | Санкт-Петербург 
----------------------
И есть организации с представительствами в разных городах:
------------------------------
 id | city_id | title 
------------------------------
 1  |   2,3   | Организация 1
------------------------------
 2  |    3    | Организация 2
------------------------------
 3  |   1,2   | Организация 3
------------------------------
Как в нашем случае вытащить орканизации, находящиеся в Казани? В нашем случае организация 1 и 3
Неактивен
Есть возможность реорганизовать таблицу?
Чтобы вот так было
------------------------------
id | city_id | title
------------------------------
1  |   2   | Организация 1
------------------------------
2  |   3   | Организация 1
------------------------------
3  |    3    | Организация 2
------------------------------
4  |   1   | Организация 3
------------------------------
5  |   2   | Организация 3
------------------------------
Иначе это почти наверняка выстрел себе в ногу будет.
Даже лучше на самом деле вынести организации в отдельную таблицу и в сводной таблице 
оставить только ссылки на организации и на город.
Неактивен
deadka написал:
Даже лучше на самом деле вынести организации в отдельную таблицу и в сводной таблице
оставить только ссылки на организации и на город.
Я уже думал над этим. Но представить себе трудно на сколько может разрастись сводная таблица если на каждую сущность (организацию) по несколько строк с внешними ключами на город.
В SQL случайно не существует функции аналогичной по функционалу in_array() в php?
Отредактированно lutsk (14.03.2017 11:56:25)
Неактивен
В этом нет ничего страшного. Скорее представить трудно, насколько плохо и криво будут работать запросы, если перечислять идентификаторы через запятую. На эти грабли уже легионы наступали.
Есть https://dev.mysql.com/doc/refman/5.7/en … ind-in-set
Но тут не поможет.
Неактивен
deadka написал:
Есть https://dev.mysql.com/doc/refman/5.7/en … ind-in-set
Но тут не поможет.
Почему?
Неактивен
Потому что в find_is_set нужно передать строковые значения через запятую, как Вы это сделаете?
Если не меняя структуры данных (хотя повторюсь, лучше нормализовать структуру) добавляйте в WHERE
запроса условия типа 
like '%,3,%' 
like '%,3' 
like '%3,' 
где 3 - это id города (Санкт-Петербург)
Неактивен