Задавайте вопросы, мы ответим
Вы не зашли.
Знатоки, помогите плиз запрос составить.
Есть таблица с городами:
----------------------
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 города (Санкт-Петербург)
Неактивен