Hi ALL!))
юзеры добавляют записи в первую таблицу, при добавлении могут выбрать один из подразделов (список подразделов - создано как вторая таблица).
каждая новая запись пишется с авто_инкрементом (в первой таблице), но он один сквозной на все подразделы.
как создать или сформировать авто_инкремент для каждого подраздела - свой?
- 27.08.2014 12:02
- 28.08.2014 17:21
provoloka, если я правильно вас понял, свяжите 2 таблицу с первой по ID и вторым запросом добавляйте запись во 2 таблицу
Спасибо сказали:
provoloka(29.08.2014), - 28.08.2014 21:38
- Регистрация: 29.01.2011
- Сообщений: 32
- Репутация: 11
Разве, что вручную самому вычислять новое число автоинкремента. Делать запрос во вторую связанную таблицу и смотреть какое должно быть следующее значение. Соответственно примари ключ во второй таблице должен включать id первой таблицы и свой собственный. Можно реализовать через тригер, в итоге в коде никаких лишних телодвижений делать не придется.
Автоматически реляционный базы данных умеют вести автоинкремент один общий для одной таблицы.Спасибо сказали:
provoloka(29.08.2014), - 29.08.2014 03:04
- Регистрация: 27.06.2013
- Сообщений: 117
- Репутация: 17
Спасибо сказали:
provoloka(29.08.2014), - 29.08.2014 11:51
cOAPerator, во второй таблице просто лежат названия подразделов, чтобы юзеры их выбирали из списка и вставляли id в свою строку в первой таблице. а далее на фронт-выводе инфы берется id подраздела и выводится его название. это не суть.
нужна такая схема:
Вася создал строку в 1таблице, для строки дается автоинкремент например 101 (по табл1), при этом выбрал из 2табл подраздел например 24 - в 1табл записались введенные Васей данные плюс id подраздела, в данном случае 24
далее
Петя создал строку в 1таблице, для строки дается автоинкремент 102 (по табл1), при этом выбрал из 2табл подраздел например 18 - в 1табл записались введенные Петей данные плюс id подраздела, в данном случае 18
далее
Олег создал строку в 1таблице, для строки дается автоинкремент 103 (по табл1), при этом выбрал из 2табл подраздел 35 - в 1табл записались введенные Олегом данные плюс id подраздела, в данном случае 35
далее
Анатолий создал строку в 1таблице, для строки дается автоинкремент 104 (по табл1), при этом выбрал из 2табл подраздел 18 - в 1табл записались введенные Анатолием данные плюс id подраздела, в данном случае 18
теперь самое интересное!
как видим, ребята выбрали подразделы 18, 24, 35, причем подраздел 18 - два раза
вот это и надо сохранить, или в третьей таблице или еще где-то, что:я говорю про SUPER-ID - как его вычислять и писать?подраздел SUPER-ID id-post 18 1 102 18 2 104 24 1 101 35 1 103
при этом подразделы могут добавляться админом во 2 таблицу и юзеры соответственно будут выбирать их.
пока думаю такой вариант - админ добавил подраздел - создается для этого подраздела свою таблица? и в неё писать копии строк с учетом ID - у нее будет свой автоинкремент и тд.Последний раз редактировалось provoloka; 29.08.2014 в 11:57.
- 29.08.2014 12:07
- Регистрация: 27.06.2013
- Сообщений: 117
- Репутация: 17
При сохранении. Допустим переменные %SUB_CATEGORY%, %POST_ID%.
Код:По дефолту поле должно быть 1.INSERT INTO table1 SELECT %SUB_CATEGORY%, MAX(table1.super_id) + 1, %POST_ID% FROM table1 WHERE table1.sub_category_id = %SUB_CATEGORY%
Спасибо сказали:
provoloka(30.08.2014), - 30.08.2014 15:36
т.е. индекс увеличивается внутри запроса? а если куча юзеров будет добавлять? или база сама по очереди разрулит всех?
я сам не смогу имитировать кучу юзеров, вот в чем дело-то. - 30.08.2014 17:03
- Регистрация: 29.01.2011
- Сообщений: 32
- Репутация: 11
Спасибо сказали:
provoloka(04.09.2014), - 04.09.2014 00:57
Вы неправильно спроектировали базу данных.
Код:Это неправильное решение.INSERT INTO table1 SELECT %SUB_CATEGORY%, MAX(table1.super_id) + 1, %POST_ID% FROM table1 WHERE table1.sub_category_id = %SUB_CATEGORY%
И давайте осмысленное название своим таблицам и полям. Пожалейте других людей, кто будет работать с вашим кодом. Не забывайте о существовании комментариев. - 04.09.2014 10:22
база обычная, без транзакции.
все-таки склоняюсь к вычислению искомого числа через формулу и просто выдавать результат на фронт, как-то сложно все, что выше))))
Тэги топика:
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
Вывод картинки параллельно с работой скрипта | Web программирование | 6 | 19.01.2012 22:42 |