SQLinfo.ru - Все о MySQL PG day 17

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.03.2017 11:43:05

lutsk
Участник
Зарегистрирован: 17.01.2013
Сообщений: 14

Нужна помощь в составлении запроса

Знатоки, помогите плиз запрос составить.

Есть таблица с городами:
----------------------
id | title
----------------------
1  | Москва
----------------------
2  | Казань
----------------------
3  | Санкт-Петербург
----------------------

И есть организации с представительствами в разных городах:
------------------------------
id | city_id | title
------------------------------
1  |   2,3   | Организация 1
------------------------------
2  |    3    | Организация 2
------------------------------
3  |   1,2   | Организация 3
------------------------------

Как в нашем случае вытащить орканизации, находящиеся в Казани? В нашем случае организация 1 и 3

Неактивен

 

#2 14.03.2017 11:45:58

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2055

Re: Нужна помощь в составлении запроса

Есть возможность реорганизовать таблицу?

Чтобы вот так было

------------------------------
id | city_id | title
------------------------------
1  |   2   | Организация 1
------------------------------
2  |   3   | Организация 1
------------------------------
3  |    3    | Организация 2
------------------------------
4  |   1   | Организация 3
------------------------------
5  |   2   | Организация 3
------------------------------

Иначе это почти наверняка выстрел себе в ногу будет.

Даже лучше на самом деле вынести организации в отдельную таблицу и в сводной таблице
оставить только ссылки на организации и на город.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 14.03.2017 11:54:08

lutsk
Участник
Зарегистрирован: 17.01.2013
Сообщений: 14

Re: Нужна помощь в составлении запроса

deadka написал:

Даже лучше на самом деле вынести организации в отдельную таблицу и в сводной таблице
оставить только ссылки на организации и на город.

Я уже думал над этим. Но представить себе трудно на сколько может разрастись сводная таблица если на каждую сущность (организацию) по несколько строк с внешними ключами на город.

В SQL случайно не существует функции аналогичной по функционалу in_array() в php?

Отредактированно lutsk (14.03.2017 11:56:25)

Неактивен

 

#4 14.03.2017 11:57:56

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2055

Re: Нужна помощь в составлении запроса

В этом нет ничего страшного. Скорее представить трудно, насколько плохо и криво будут работать запросы, если перечислять идентификаторы через запятую. На эти грабли уже легионы наступали.
Есть https://dev.mysql.com/doc/refman/5.7/en … ind-in-set
Но тут не поможет.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 14.03.2017 12:08:15

lutsk
Участник
Зарегистрирован: 17.01.2013
Сообщений: 14

Re: Нужна помощь в составлении запроса

deadka написал:

Есть https://dev.mysql.com/doc/refman/5.7/en … ind-in-set
Но тут не поможет.

Почему?

Неактивен

 

#6 14.03.2017 12:18:46

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2055

Re: Нужна помощь в составлении запроса

Потому что в find_is_set нужно передать строковые значения через запятую, как Вы это сделаете?
Если не меняя структуры данных (хотя повторюсь, лучше нормализовать структуру) добавляйте в WHERE
запроса условия типа
like '%,3,%'
like '%,3'
like '%3,'
где 3 - это id города (Санкт-Петербург)


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson