Как быть, есть три таблицы
1. cities id | name
--------------
1 | Moskow
2 | Kirow
3 | Orel
....
2. categoriesid | name
--------------
1 | name1
2 | name2
3 | name3
...
И есть третья таблица - список компаний: id | name | cities_id | categories_id
----------------------------------------------------
1 | alpha | 1,2,5,18 | 3,76,78
2 | betta | 2,14,31 | 13,60,75
3 | gamma | 1,17,19 | 95,101
....
Вопрос следующий:
Как удобно делать выборку компаний по городу, категории, городу и категории вместе, если каждая компания может работать в нескольких городах и выполнять несколько категорий работ?
варианты из 1930 городов, 285 категорий.
Раньше я использовал:
- FILD_IN_SET() но сейчас значений больше чем 64 и этот вариант не годится.
- ENUM тоже не получается, так как поля cities_id и categories_id могут содержать сразу несколько значений
- переводил все это в многомерный массив потом на php искал.
- делал всякие WHERE cities_id LIKE '%,5,%' OR cities_id LIKE '5,%' OR cities_id LIKE '%,5' (как и варианты с дописыванием в поле в начале и конце запятых, для сокращения количества OR).
- еще советовали связать таблицы, но как это сделать когда в cities_id и categories_id несколько значений, да и как потом выбирать с учетом этих связей, я не сумел разобраться (не нашел примеров нормальных, так как не знал что даже искать, да и то ли это, что нужно?)
Есть ли красивые решения которые используются в профессиональной среде, или все так и лепят как я?
Разъясните, гуру, очень хочу разобраться.