Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Связь много ко многим.
|
|||
|---|---|---|---|
|
#18+
Всем привет. Что то я не могу понять как лучше поступить со связью много ко многим. Вопщем легче это расмотреть на простом примере: Есть таблица фильмов и таблица жанров. Один фильм может пренадлежать одновременно к нескольким жанрам, ровно так же как и один жанр принадлежит нескольким фильмам. Вопщем связь реализована через третью таблицу (если кто знает как подругому подскажите). Выходит что это делаеться так: table films int id (primary key); varchar(200) name; table genres int id (primary key); varchar(200) name; table films_genres; int id (primary key); | хотя наверное он тут не нужен int film_id; int genre_id; А теперь задача выбрать таблицу содержашую все фильмы и в одтельном столбце жанр. Если просто для вывода подойдёт обычный sql запрос вида: select films.name as film_name, genres.name as genre_name where films.id=films_genres.firm_id && genres.id=films_genres.genre_id; Он выведит повторяющиеся строки: film_name | genre_name ------------------ Robot | fantazy Robot | crazy Cool Film | camedy Cool Film | fantazy -------------------- , и поэтому потом будет не удобно на том же php разбираться какому фильму какие жанры. А для каждого фильма отдельно делать запрос на то в каких он жанрах накладно, ибо если список из 1000 фильмов вместо одного получиться 1001 запрос. Кто бы как поступил в этой синуации чтобы получить на выходе: Robot - fantazy, crazy Cool Film - camedy, fantazy ... Можно с исопльзованием любого внешнего языка програмирования, главное чтобы это работало быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 12:24 |
|
||
|
Связь много ко многим.
|
|||
|---|---|---|---|
|
#18+
adv оно? Ну во первых у человека не МС СКЛ стоит а скорее МойСКЛ, так что не прокатит. А я бы предложил отсортировать бы по имени фильма зарос и уже на клиенте делть все что хотите - это процедура займет строчек 5 я думаю. Так что клиент рулит..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 13:04 |
|
||
|
Связь много ко многим.
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы. Сам зачитался вот этого http://www.sql.ru/forum/actualthread.aspx?tid=215946 :) Но там один спор под конец уже пошёл. Вопщем как верно заметили предпочтительнее для меня использовать mysql, но подойдут любые решения, так как выбор БД зависит полностью от меня (личная разработка, некомерческая, и к работе не имеет отношения.) > А я бы предложил отсортировать бы по имени фильма зарос и уже на клиенте > делть все что хотите - это процедура займет строчек 5 я думаю. Написать не сложно ) Интереснее было узнать возможно ли это седлать как нибудь по другому. Ещё раз всем спасибо за ответы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 13:47 |
|
||
|
Связь много ко многим.
|
|||
|---|---|---|---|
|
#18+
Появилось безумное желание посмотреть как это сделали в phpBB и Invision, там схожая ситуация много форумов, много модераторов работает всё на mysql или PgSQL по желанию. Вопщем вооружаюсь grep find cut less и на поиски ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 13:52 |
|
||
|
Связь много ко многим.
|
|||
|---|---|---|---|
|
#18+
Вопщем в phpBB2 с использованием mysql так и сделано: три и более таблиц, выбираеться обычным запросом, сортируеться по id, а дальше код на php который это для удобства в массив кидает, для поего примера это что то типо: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 16:36 |
|
||
|
Связь много ко многим.
|
|||
|---|---|---|---|
|
#18+
NerianВопщем в phpBB2 с использованием mysql так и сделано: три и более таблиц, выбираеться обычным запросом, сортируеться по id, а дальше код на php который это для удобства в массив кидает, для поего примера это что то типо: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Сорри, ошибся на 3 строчки ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 17:02 |
|
||
|
Связь много ко многим.
|
|||
|---|---|---|---|
|
#18+
Nerian Кто бы как поступил в этой синуации чтобы получить на выходе: Robot - fantazy, crazy Cool Film - camedy, fantazy Это на клиенте надо делать, любой отчетник тебе может например выделить группу записей по названию фильма и внутри группы перечислить все жанры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2005, 22:58 |
|
||
|
Связь много ко многим.
|
|||
|---|---|---|---|
|
#18+
MasterZiv Nerian Кто бы как поступил в этой синуации чтобы получить на выходе: Robot - fantazy, crazy Cool Film - camedy, fantazy Это на клиенте надо делать, любой отчетник тебе может например выделить группу записей по названию фильма и внутри группы перечислить все жанры. Если нужен один фильм эта схема будет работать хорошо, а если потвребуеться для 1000 фильмов, тогда потребуеться 1000 запросов, вместо одного. Очень накладно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2005, 14:38 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33322604&tid=1545612]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 272ms |
| total: | 376ms |

| 0 / 0 |
