X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Добавление в базу данных
Bella_hb
Bella_hb
Topic Starter сообщение 5.5.2012, 6:55; Ответить: Bella_hb
Сообщение #1


Здравствуйте! Помогите, пожалуйста!!! :wacko:

Вот моя база данных:
-- Table structure for table `Lic_scheta`
--

CREATE TABLE IF NOT EXISTS `Lic_scheta` (
`n_scheta` int(3) NOT NULL,
`n_kvartiry` int(3) NOT NULL,
`n_doma` int(3) NOT NULL,
`ulica` char(50) NOT NULL,
`plochad` int(3) NOT NULL,
`kol_jilcov` int(3) NOT NULL,
PRIMARY KEY (`n_scheta`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

--
-- Dumping data for table `Lic_scheta`
--

INSERT INTO `Lic_scheta` (`n_scheta`, `n_kvartiry`, `n_doma`, `ulica`, `plochad`, `kol_jilcov`) VALUES
(1, 1, 1, 'Ленина', 50, 3),
(2, 2, 1, 'Ленина', 80, 5),
(3, 3, 3, 'Менделеева', 72, 4);

-- --------------------------------------------------------

--
-- Table structure for table `Schetchiki`
--

CREATE TABLE IF NOT EXISTS `Schetchiki` (
`n_schetchika` int(3) NOT NULL,
`n_uslugi` int(3) NOT NULL,
`n_scheta` int(3) NOT NULL,
`pokazaniya` int(10) NOT NULL,
PRIMARY KEY (`n_schetchika`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

--
-- Dumping data for table `Schetchiki`
--

INSERT INTO `Schetchiki` (`n_schetchika`, `n_uslugi`, `n_scheta`, `pokazaniya`) VALUES
(1, 5, 1, 4000),
(2, 6, 1, 200),
(3, 3, 2, 210),
(4, 4, 2, 200),
(5, 5, 2, 3200),
(6, 6, 2, 210),
(7, 5, 3, 3000);

-- --------------------------------------------------------

--
-- Table structure for table `Tarify`
--

CREATE TABLE IF NOT EXISTS `Tarify` (
`n_tarifa` int(3) NOT NULL,
`n_uslugi` int(3) NOT NULL,
`stavka` int(3) NOT NULL,
`vid_rascheta` tinyint(1) NOT NULL,
PRIMARY KEY (`n_tarifa`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

--
-- Dumping data for table `Tarify`
--

INSERT INTO `Tarify` (`n_tarifa`, `n_uslugi`, `stavka`, `vid_rascheta`) VALUES
(1, 1, 3, 3),
(2, 2, 16, 3),
(3, 3, 10, 2),
(4, 3, 12, 1),
(5, 4, 37, 1),
(6, 4, 70, 2),
(7, 5, 2, 1),
(8, 6, 3, 1),
(9, 6, 59, 2);

-- --------------------------------------------------------

--
-- Table structure for table `Uslugi`
--

CREATE TABLE IF NOT EXISTS `Uslugi` (
`n_uslugi` int(3) NOT NULL,
`nazvanie` char(50) NOT NULL,
PRIMARY KEY (`n_uslugi`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

--
-- Dumping data for table `Uslugi`
--

INSERT INTO `Uslugi` (`n_uslugi`, `nazvanie`) VALUES
(1, 'Кап. ремонт'),
(2, 'Отопление'),
(3, 'Холодное водоснабжение'),
(4, 'Горячее водоснабжение'),
(5, 'Электроэнергия'),
(6, 'Газ');

-- --------------------------------------------------------

--
-- Table structure for table `Uslugi_na_lic_schetah`
--

CREATE TABLE IF NOT EXISTS `Uslugi_na_lic_schetah` (
`id` int(3) NOT NULL,
`n_scheta` int(3) NOT NULL,
`n_uslugi` int(3) NOT NULL,
`n_schetchika` int(3) DEFAULT NULL,
`n_tarifa` int(3) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

--
-- Dumping data for table `Uslugi_na_lic_schetah`
--

INSERT INTO `Uslugi_na_lic_schetah` (`id`, `n_scheta`, `n_uslugi`, `n_schetchika`, `n_tarifa`) VALUES
(1, 1, 1, 0, 1),
(2, 1, 2, 0, 2),
(3, 1, 3, 0, 3),
(4, 1, 4, 0, 6),
(5, 1, 5, 1, 7),
(6, 1, 6, 2, 8),
(7, 2, 1, 0, 1),
(8, 2, 2, 0, 2),
(9, 2, 3, 3, 4),
(10, 2, 4, 4, 5),
(11, 2, 5, 5, 7),
(12, 2, 6, 6, 8),
(13, 3, 1, 0, 1),
(14, 3, 2, 0, 2),
(15, 3, 3, 0, 3),
(16, 3, 4, 0, 6),
(17, 3, 5, 7, 7),
(18, 3, 6, 0, 9);

-- --------------------------------------------------------

--
-- Table structure for table `Vid_rascheta`
--

CREATE TABLE IF NOT EXISTS `Vid_rascheta` (
`id` int(3) NOT NULL,
`nazvanie` char(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

--
-- Dumping data for table `Vid_rascheta`
--

INSERT INTO `Vid_rascheta` (`id`, `nazvanie`) VALUES
(1, 'По счетчику'),
(2, 'По количеству проживающих'),
(3, 'По площади');

Так считается квартплата:
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]

Мне нужно добавить лицевой счет в таблицу Lic_scheta, добавить 6 услуг для этого счета в таблицу Uslugi_na_lic_schetah, и если выбран тариф с видом расчета По счетчику добавить счетчик в таблицу Schetchiki. Как это лучше сделать?
if ($_GET["submit"])
{
$query="INSERT INTO Lic_scheta
(n_scheta , n_kvartiry , n_doma , ulica, plochad, kol_jilcov ) VALUES
($_GET[n],$_GET[kvar], $_GET[dom], '$_GET[ul]', $_GET[pl], $_GET[jil])"
or die (mysql_error());
$query1="INSERT INTO Uslugi_na_lic_schetah
(id, n_scheta , n_uslugi , n_schetchika , n_tarifa ) VALUES
($_GET[n1],$_GET[n], 1, 0,1 )"
or die (mysql_error());
$query2="INSERT INTO Uslugi_na_lic_schetah
(id, n_scheta , n_uslugi , n_schetchika , n_tarifa ) VALUES
($_GET[n1]+1,$_GET[n], 2, 0,2 )"
or die (mysql_error());
$query3="INSERT INTO Uslugi_na_lic_schetah
(id, n_scheta , n_uslugi , n_schetchika , n_tarifa ) VALUES
($_GET[n1]+2,$_GET[n], 3, #,# )"
or die (mysql_error());
$query4="INSERT INTO Uslugi_na_lic_schetah
(id, n_scheta , n_uslugi , n_schetchika , n_tarifa ) VALUES
($_GET[n1]+3,$_GET[n], 4, #,# )"
or die (mysql_error());
$query5="INSERT INTO Uslugi_na_lic_schetah
(id, n_scheta , n_uslugi , n_schetchika , n_tarifa ) VALUES
($_GET[n1]+4,$_GET[n], 5, #,7 )"
or die (mysql_error());
$query6="INSERT INTO Uslugi_na_lic_schetah
(id, n_scheta , n_uslugi , n_schetchika , n_tarifa ) VALUES
($_GET[n1]+5,$_GET[n], 6, #,# )"
or die (mysql_error());
$res=mysql_query($query);
$res1=mysql_query($query1);
$res2=mysql_query($query2);
$res3=mysql_query($query3);
$res4=mysql_query($query4);
$res5=mysql_query($query5);
$res6=mysql_query($query6);


if ($res && $res1 && $res2 && $res3 && $res4 && $res5 && $res6) echo "Данные добавлены.";
}
$query="SELECT max(n_scheta) as max_id from Lic_scheta";
$res=mysql_query($query) or die (mysql_error());
$row=mysql_fetch_array($res);
if ($row) $m_id=$row[max_id]+1;
else $m_id=1;

$query1="SELECT max(id) as max_id1 from Uslugi_na_lic_schetah";
$res1=mysql_query($query1) or die (mysql_error());
$row1=mysql_fetch_array($res1);
if ($row1) $m_id1=$row1[max_id1]+1;
else $m_id1=1;

$query2="SELECT max(id) as max_id2 from Uslugi_na_lic_schetah";
$res2=mysql_query($query2) or die (mysql_error());
$row2=mysql_fetch_array($res2);
if ($row2) $m_id2=$row2[max_id2]+1;
else $m_id2=1;

$query3="SELECT max(id) as max_id3 from Uslugi_na_lic_schetah";
$res3=mysql_query($query3) or die (mysql_error());
$row3=mysql_fetch_array($res3);
if ($row3) $m_id3=$row3[max_id3]+1;
else $m_id3=1;

$query4="SELECT max(id) as max_id4 from Uslugi_na_lic_schetah";
$res4=mysql_query($query4) or die (mysql_error());
$row4=mysql_fetch_array($res4);
if ($row4) $m_id4=$row4[max_id4]+1;
else $m_id4=1;

$query5="SELECT max(id) as max_id5 from Uslugi_na_lic_schetah";
$res5=mysql_query($query5) or die (mysql_error());
$row5=mysql_fetch_array($res5);
if ($row5) $m_id5=$row5[max_id5]+1;
else $m_id5=1;

$query6="SELECT max(id) as max_id6 from Uslugi_na_lic_schetah";
$res6=mysql_query($query6) or die (mysql_error());
$row6=mysql_fetch_array($res6);
if ($row6) $m_id6=$row1[max_id6]+1;
else $m_id1=6;

?>

<FORM method="get" action="add_schet.php">
<INPUT TYPE=HIDDEN NAME=n VALUE="<? echo $m_id; ?>">
<INPUT TYPE=HIDDEN NAME=n1 VALUE="<? echo $m_id1; ?>">
<INPUT TYPE=HIDDEN NAME=n2 VALUE="<? echo $m_id2; ?>">
<INPUT TYPE=HIDDEN NAME=n3 VALUE="<? echo $m_id3; ?>">
<INPUT TYPE=HIDDEN NAME=n4 VALUE="<? echo $m_id4; ?>">
<INPUT TYPE=HIDDEN NAME=n5 VALUE="<? echo $m_id5; ?>">
<INPUT TYPE=HIDDEN NAME=n6 VALUE="<? echo $m_id6; ?>">
<br>
<b> Номер квартиры: </b>
<INPUT TYPE=TEXT NAME="kvar" size=10 maxlength=25>
<br>
<b> Номер дома: </b>
<INPUT TYPE=TEXT NAME="dom" size=10 maxlength=25>
<br>
<b> Название улицы: </b>
<INPUT TYPE=TEXT NAME="ul" size=10 maxlength=25>
<br>
<b> Площадь: </b>
<INPUT TYPE=TEXT NAME="pl" size=10 maxlength=25>
<br>
<b> Количество проживающих: </b>
<INPUT TYPE=TEXT NAME="jil" size=10 maxlength=25>
<br>
<b>Холодное водоснабжение: </b> <Select name= "usluga3">
<option value= "schetchik3"> По счетчику </option>
<option value= "kol_jil3"> По количеству проживающих </option>
</Select>
<br>
<b>Горячее водоснабжение: </b> <Select name= "usluga4">
<option value= "schetchik4"> По счетчику </option>
<option value= "kol_jil4"> По количеству проживающих </option>
</Select>
<br>
<b>Газ: </b> <Select name= "usluga6">
<option value= "schetchik6"> По счетчику </option>
<option value= "kol_jil6"> По количеству проживающих </option>
</Select>
<br>
<Input type=submit name="submit" value="Ввод">
</FORM>

Что поставить в запросах вместо символа # ?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
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
Bella_hb
Topic Starter сообщение 6.5.2012, 9:58; Ответить: 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:

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыПродам базу сайтов 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
автор: Галецкая


 



RSS Текстовая версия Сейчас: 24.4.2024, 6:02
Дизайн