Помощник
|
Добавление в базу данных |
Bella_hb
|
Сообщение
#1
|
||
|
|
||
|
|||
Arks |
5.5.2012, 21:10;
Ответить: Arks
Сообщение
#2
|
|
многабукаф, ниасилил. Где там октоторп то хоть? О_о
а нашел! А в чем смысл задачи? Поставить то можно все что угодно.. например [COLOR=black] [LIST=1] [*]DELIMITER $$ [*][COLOR=#0000ff]DROP[/COLOR] [COLOR=#0000ff]PROCEDURE[/COLOR] [COLOR=#0000ff]IF[/COLOR] [COLOR=#0000ff]EXISTS[/COLOR] `getIndexToTmpTable`$$ [*]/** [*] main_id - идентификатор корня или метка поиска [*] search_id - идентификатор для начала поиска [*] zlevel - максимальный уровень вложенности, чтобы не упрыгать слишком глубоко, [*] - установить -1 - чтобы отключить ограничение по вложенности [*] sublevel - текущий уровень вложенности, для того чтобы складировать в базу [*] - установить 1 [*] */ [*][COLOR=#0000ff]CREATE[/COLOR] [COLOR=#0000ff]PROCEDURE[/COLOR] `getIndexToTmpTable` ( [*] [COLOR=#0000ff]in[/COLOR] main_id [COLOR=#0000ff]INT[/COLOR], [*] [COLOR=#0000ff]in[/COLOR] search_id [COLOR=#0000ff]INT[/COLOR], [*] [COLOR=#0000ff]in[/COLOR] zlevel [COLOR=#0000ff]INT[/COLOR], [*] [COLOR=#0000ff]in[/COLOR] sublevel [COLOR=#0000ff]INT[/COLOR] ) [*][COLOR=#0000ff]BEGIN[/COLOR] [*] [COLOR=#0000ff]DECLARE[/COLOR] done [COLOR=#0000ff]INT[/COLOR] [COLOR=#0000ff]DEFAULT[/COLOR] 0; [*] [COLOR=#0000ff]DECLARE[/COLOR] catalog_id [COLOR=#0000ff]INT[/COLOR]; [*] [COLOR=#0000ff]DECLARE[/COLOR] catalog_pid [COLOR=#0000ff]INT[/COLOR]; [*] [COLOR=#0000ff]DECLARE[/COLOR] cur1 [COLOR=#0000ff]CURSOR[/COLOR] [COLOR=#0000ff]FOR[/COLOR] [COLOR=#0000ff]select[/COLOR] id,pid [COLOR=#0000ff]from[/COLOR] [COLOR=#0000ff]catalog[/COLOR] [COLOR=#0000ff]where[/COLOR] pid=search_id; [*] [COLOR=#0000ff]DECLARE[/COLOR] [COLOR=#0000ff]CONTINUE[/COLOR] HANDLER [COLOR=#0000ff]FOR[/COLOR] [COLOR=#0000ff]NOT[/COLOR] [COLOR=#0000ff]FOUND[/COLOR] [COLOR=#0000ff]SET[/COLOR] done = 1; [*] [COLOR=#0000ff]IF[/COLOR] sublevel<=1 [COLOR=#0000ff]THEN[/COLOR] /** чтобы установть только раз*/ [*] [COLOR=#0000ff]IF[/COLOR] zlevel<=0 [COLOR=#0000ff]THEN[/COLOR] [*] /** число наобум */ [*] [COLOR=#0000ff]SET[/COLOR] max_sp_recursion_depth= 15; [*] [COLOR=#0000ff]ELSE[/COLOR] [*] [COLOR=#0000ff]SET[/COLOR] max_sp_recursion_depth= zlevel+1; [*] [COLOR=#0000ff]END[/COLOR] [COLOR=#0000ff]IF[/COLOR]; [*] [COLOR=#0000ff]END[/COLOR] [COLOR=#0000ff]IF[/COLOR]; [*] [COLOR=#0000ff]OPEN[/COLOR] cur1; [*] [COLOR=#0000ff]IF[/COLOR] main_id = search_id [COLOR=#0000ff]THEN[/COLOR] [*] /** вставим саму запись, чтобы был полный боекомплект */ [*] [COLOR=#0000ff]insert[/COLOR] [COLOR=#0000ff]into[/COLOR] tmp__index [COLOR=#0000ff]set[/COLOR] [*] id = main_id, [*] pid =([COLOR=#0000ff]select[/COLOR] pid [COLOR=#0000ff]from[/COLOR] [COLOR=#0000ff]catalog[/COLOR] [COLOR=#0000ff]where[/COLOR] id=main_id [COLOR=#0000ff]limit[/COLOR] 1), [*] rid =main_id, [*] [COLOR=#0000ff]level[/COLOR] = sublevel-1; [*] [COLOR=#0000ff]END[/COLOR] [COLOR=#0000ff]IF[/COLOR]; [*] /** нужно влючить глубину рекурсии */ [*] REPEAT [*] [COLOR=#0000ff]FETCH[/COLOR] cur1 [COLOR=#0000ff]INTO[/COLOR] catalog_id,catalog_pid; [*] [COLOR=#0000ff]IF[/COLOR] [COLOR=#0000ff]NOT[/COLOR] done [COLOR=#0000ff]THEN[/COLOR] [*] /** вставим текущую найденную запись */ [*] [COLOR=#0000ff]insert[/COLOR] [COLOR=#0000ff]into[/COLOR] tmp__index [COLOR=#0000ff]set[/COLOR] [*] id = catalog_id, [*] pid = catalog_pid, [*] rid = main_id, [*] [COLOR=#0000ff]level[/COLOR] = sublevel; [*] /** спустимся по ниже */ [*] [COLOR=#0000ff]call[/COLOR] getIndexToTmpTable(main_id,catalog_id,zlevel,sublevel+1); [*] [COLOR=#0000ff]END[/COLOR] [COLOR=#0000ff]IF[/COLOR]; [*] UNTIL done [COLOR=#0000ff]END[/COLOR] REPEAT; [*] [COLOR=#0000ff]CLOSE[/COLOR] cur1; [*][COLOR=#0000ff]END[/COLOR]$$ [*]DELIMITER ; [/LIST] [/COLOR] только вот зачем... |
|
|
Bella_hb
|
Сообщение
#3
|
|
|
:)
ну у меня есть таблицы Lic_scheta, Tarify, Uslugi, Vid_rascheta, Schetchiki, Uslugi_na_lic_schetah. Нужно добавить лицевой счет. Я могу просто добавить лицевой счет в таблицу Lic_scheta, но тогда для него не получится посчитать квартплату, так как квартплата считается так: SELECT b.nazvanie, (CASE WHEN f.id =1 THEN d.pokazaniya * c.stavka WHEN f.id =2 THEN e.kol_jilcov * c.stavka WHEN f.id =3 THEN e.plochad * c.stavka END ) AS summa FROM Uslugi_na_lic_schetah a INNER JOIN Uslugi b ON a.n_uslugi = b.n_uslugi INNER JOIN Tarify c ON b.n_uslugi = c.n_uslugi AND c.n_tarifa = a.n_tarifa INNER JOIN Lic_scheta e ON a.n_scheta = e.n_scheta INNER JOIN Vid_rascheta f ON c.vid_rascheta = f.id LEFT JOIN Schetchiki d ON a.n_schetchika = d.n_schetchika WHERE e.n_scheta=$_GET[schet] То есть мне нужно, чтобы одновременно с тем инсертом в таблицу Uslugi_na_lic_schetah добавились 6 услуг, у которых поле n_tarifa должно определяться с учетом того чтот выберет пользователь для каждой услуги, по счетчику или количеству проживающих, а если выбрано по счетчику то еще должен добавляться счетчик в таблицу Schetchiki. В принципе если поставить вместо # любые числа, то эти 6 услуг добавляются. ...Вообщем опять многабукаф:rolleyes:
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Продам базу сайтов Wordpress в 16 миллионов доменов! Свежая сборка. | 19 | Boymaster | 11356 | 20.4.2024, 0:01 автор: Boymaster |
|
Интеграция спортивных данных API. Коэффициенты БК, Live результаты | 15 | yaroslav89 | 6862 | 8.4.2024, 17:17 автор: spoyer_ru |
|
Подкиньте базу ключей тематики wallpaper - Обои для рабочего стола | 0 | uahomka | 865 | 27.2.2024, 0:38 автор: uahomka |
|
ГОРЯЧИЕ FOREX|CRYPTO ЛИДЫ. БАЗЫ ДАННЫХ [Чарджбек|Рекавери|Возврат] |
9 | Leado | 3911 | 9.2.2024, 16:04 автор: baza0013 |
|
Базы данных, различной тематики, выкладываем тут. Делимся, обмениваемся, заказываем, парсим. |
12 | InfoObmen | 15257 | 4.9.2022, 2:32 автор: Галецкая |
Текстовая версия | Сейчас: 24.4.2024, 6:02 |