|
|
|
SET или связанная таблица?
|
|||
|---|---|---|---|
|
#18+
Вот в чём вопрос. Есть таблица товаров. Каждый товар может быть в одном или нескольких городах. Как лучше организовать связь товары <-> города? Сделать таблицу городов и таблицу индексов или добавить столбец SET с перечнем городов? Изменение списока городов будет весьма редкой операцией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 08:58:17 |
|
||
|
SET или связанная таблица?
|
|||
|---|---|---|---|
|
#18+
XaHyMaHСделать таблицу городов и таблицу индексовИменно так. Заодно в таблице-связке можно будет хранить дополнительную информацию, например, количество этого товара в этом городе. Или дату последнего завоза. Или еще что-то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 09:03:44 |
|
||
|
SET или связанная таблица?
|
|||
|---|---|---|---|
|
#18+
А как в таком случае можно будет сделать выборку нескольких товаров с указанием города, где есть этот товар? Чтобы получить список вида: - Товар1: Город1, Город2, Город312 - Товар2: Город17 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 11:57:33 |
|
||
|
SET или связанная таблица?
|
|||
|---|---|---|---|
|
#18+
XaHyMaHА как в таком случае можно будет сделать выборку нескольких товаров с указанием города, где есть этот товар? Чтобы получить список вида: - Товар1: Город1, Город2, Город312 - Товар2: Город17 такую выборку лучше вообще не получать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 12:21:33 |
|
||
|
SET или связанная таблица?
|
|||
|---|---|---|---|
|
#18+
XaHyMaHА как в таком случае можно будет сделать выборку нескольких товаров с указанием города, где есть этот товар? Чтобы получить список вида: - Товар1: Город1, Город2, Город312 - Товар2: Город17 Учите матчасть. В частности, GROUP_CONCAT(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 12:33:00 |
|
||
|
SET или связанная таблица?
|
|||
|---|---|---|---|
|
#18+
XaHyMaHА как в таком случае можно будет сделать выборку нескольких товаров с указанием города, где есть этот товар? Чтобы получить список вида: - Товар1: Город1, Город2, Город312 - Товар2: Город17Если "Город1, Город2, Город312" - это разные поля, то динамическим запросом. Если одно поле, то GROUP_CONCAT(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 17:02:18 |
|
||
|
SET или связанная таблица?
|
|||
|---|---|---|---|
|
#18+
Ясно. А что будет быстрее? Сперва выбрать все города в массив на ПХП, потом выбрать товары и индексы городов и вывести всё через подстановку Город[Индекс] в ПХП. Или. Соорудить выборку сразу из трёх таблиц с двумя левыми джойнами? SELECT tov.id, tov.name, GROUP_CONCAT( DISTINCT gorod.name ORDER BY gorod.name ) AS glist FROM `tov` LEFT JOIN cross_tovar_gorod ON tov.id = cross_tovar_gorod.tovid LEFT JOIN gorod ON gorod.id = cross_tovar_gorod.gorid GROUP BY tov.id ORDER BY tov.id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 13:16:27 |
|
||
|
SET или связанная таблица?
|
|||
|---|---|---|---|
|
#18+
XaHyMaHСоорудить выборку сразу из трёх таблиц с двумя левыми джойнами? SELECT tov.id, tov.name, GROUP_CONCAT( DISTINCT gorod.name ORDER BY gorod.name ) AS glist FROM `tov` LEFT JOIN cross_tovar_gorod ON tov.id = cross_tovar_gorod.tovid LEFT JOIN gorod ON gorod.id = cross_tovar_gorod.gorid GROUP BY tov.id ORDER BY tov.idИменно так. Только DISTINCT непонятно зачем, по идее там дублей быть не должно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 13:32:41 |
|
||
|
SET или связанная таблица?
|
|||
|---|---|---|---|
|
#18+
XaHyMaHА что будет быстрее? Что быстрее - поручить бухгалтеру принести справку по платежам или поручить ему притащить книгу продаж и составлять эту справку самому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 13:55:16 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39046887&tid=1832739]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
50ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 336ms |

| 0 / 0 |
