[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP + MsSQL (временные таблицы)
maksimon
как прописать CREATE TABLE #table_1 в php запросе? или как можно поимому прописать вот такой запрос:


CREATE TABLE #table_1 
(
KodZakaz varchar(255),
Vrtv varchar(255),
AVT varchar (255),
rcp1 varchar (255),
)
INSERT INTO #table_1 (KodZakaz, Vrtv, AVT, rcp1)
Select Zakaz.kodZakaz , (Izdelaya .KodVorot) as Vrt
, (Zakazano.kodzakazano) as AVT, (Izdelaya .rcp) as RCP1
from Zakaz
inner join Izdelaya on Izdelaya.KodZakaz=Zakaz.KodZakaz
left join Zakazano on Zakazano.KodZakaz=Zakaz.KodZakaz and Zakazano.TipZakazano='AVT'

WHERE DataCehZakaz>='20110101' and DataCehZakaz<'20120201'


UPDATE #table_1 SET AVT=1 WHERE AVT!=0

SELECT COUNT (KodZakaz) as kod, (AVT) as avtomatika, rcp1 FROM #table_1 group by AVT, rcp1
DROP TABLE #table_1


в MsSQL запрос работает а тут не выходит...



Спустя 23 минуты, 9 секунд (11.03.2012 - 13:01) Placido написал(а):
Какие ошибки, сам запрос?

Спустя 11 минут, 25 секунд (11.03.2012 - 13:12) maksimon написал(а):
ругается на php код не в строках запроса, но если прописываю простой запрос типа Select * FROM table ... все работает!!!

Спустя 7 минут, 53 секунды (11.03.2012 - 13:20) Visman написал(а):
В первом посте нет php кода, как там может на него ругаться? Где сам код?

Спустя 31 минута, 28 секунд (11.03.2012 - 13:51) maksimon написал(а):
вот
 <?php

$url = $_SERVER['REQUEST_URI'];
//вместо авторизации
include_once('func.php');


function get_sek_vor()
{

global $conn;

$sql = "CREATE TABLE #table_1
( KodZakaz varchar(255),
Vrtv varchar(255),
AVT varchar (255),
rcp1 varchar (255), )
INSERT INTO #table_1 (KodZakaz, Vrtv, AVT, rcp1)
Select Zakaz.kodZakaz , (Izdelaya .KodVorot) as Vrt , (Zakazano.kodzakazano) as AVT, (Izdelaya .rcp) as RCP1 from Zakaz
inner join Izdelaya on Izdelaya.KodZakaz=Zakaz.KodZakaz
left join Zakazano on Zakazano.KodZakaz=Zakaz.KodZakaz
and Zakazano.TipZakazano='AVT'
WHERE DataCehZakaz>='20110101' and DataCehZakaz<'20120201'
UPDATE #table_1 SET AVT=1
WHERE AVT!=0SELECT COUNT (KodZakaz) as kod, (AVT) as avtomatika, rcp1 FROM #table_1
group by AVT, rcp1 DROP TABLE #table_1


"
;

$rs = odbc_exec($conn, $sql);

while ( $line = odbc_fetch_array( $rs ) )
$result[odbc_result($rs, 'KodZakaz')] = $line;

return $result;
}

if ( !isset( $_SESSION['manId'] ) ) { header('Location: /login.php'); }
$manId = $_SESSION['manId'];
$otdelId = $_SESSION['otdelId'];

$sek_vor = get_sek_vor();

?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"
>
<html>
<head>
<title>
ТОП </title>

<meta
name="description" content="">
<meta
HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
<link
type="text/css" href="css/smoothness/jquery-ui-1.8.2.custom.css" rel="stylesheet" />
<link
href="css/style.css" type="text/css" rel="stylesheet" />
<script
type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script
type="text/javascript" src="js/jquery-ui-1.8.2.custom.min.js"></script>
<script
src="js/jquery.ui.datepicker-ru.js"></script>
<script
type="text/javascript">
$(function(){
$(window).load(function(){
//выключаем индикатор, когда загрузилась вся страница
$('#indicator').dialog('close');
});
$('#indicator').dialog({
title: 'Идет загрузка',
autoOpen: false, modal: true, width: 200, height: 70

});
$('#indicator')
.
ajaxStart(function() { $(this).dialog('open'); })
.
ajaxStop(function() { $(this).dialog('close'); });

//hover states on the static widgets
$('input:submit, .but').hover(
function() { $(this).addClass('ui-state-hover'); },
function() { $(this).removeClass('ui-state-hover'); }
);

//оформляем ссылки и кнопки
$('input:submit, .but').button();


});
</script>

<style
type="text/css">
body{ font: 62.5% "Trebuchet MS", sans-serif;}

#leftbar1 {font-family:"Trebuchet MS";margin: 0 30px;}
#leftbar1 h2{clear:both;padding-top:40px;}
#leftbar1 label{width:130px;font-size:1.2em;}
#leftbar1 input{display:block;float:left;width:100px;}
#leftbar1 select{margin-right:20px;}
#leftbar1 input[type="checkbox"]{width:auto;margin:0;}

#filterOtchet p{padding-bottom:10px;float:left;}
#leftbar1 form h2 label{width:150px;}


.zebra tbody tr:nth-child(even) {
background: #f5f5f5;
-webkit-box-shadow: 0 1px 0 rgba(255,255,255,.8) inset;
-moz-box-shadow:0 1px 0 rgba(255,255,255,.8) inset;
box-shadow: 0 1px 0 rgba(255,255,255,.8) inset;
}


#filterOtchet {background-color:#F2F2F2; border:1px solid #D6D6D6;padding:10px;width:100%;}
#gateTable { margin: 1em 0; border-collapse: collapse; width: 100%; }
#gateTable td, #itemTable th { border: 1px solid #eee; padding: .6em 10px; text-align: left; }
.edit{background: url('/img/icons/edit.png') no-repeat; height:16px; width:16px; cursor:pointer;display:inline-block;}
.tick{background: url('/img/icons/tick.png') no-repeat; height:16px; width:16px;display:inline-block;}
.document{background: url('/img/icons/page.png') no-repeat; height:16px; width:16px; cursor:pointer; display:block;}
.clear{clear:both;}
#switchFilter{cursor:pointer;text-decoration:underline;}
.zoomdoc{background: url('/img/icons/zoomdoc.png') no-repeat; height:16px; width:16px; display:inline-block; cursor:pointer;}
h1{padding-bottom:15px;}
h4{clear:both};
</style>
</head>
<body>
<div
id="indicator" style="text-align:center;"><img src="/img/icons/indicator.gif" alt="идет загрузка" /></div>
<script
type="text/javascript">
$('#indicator').dialog({
title: 'Идет загрузка',
autoOpen: false, modal: true, width: 200, height: 70

});
$('#indicator').dialog('open');

function tableitog()
{
var baly = $('tr[filtermatch!="false"]').find('td.kolvo');

var sum = 0;
for (var ii=0;ii<kol_vo.length;ii++){
sum += kol_vo[ii].innerHTML.replace(' ', '') * 1;
}
$('#tdkolvo').html(sum.toFixed(0));

</script>
<div
id="wrapper">
<div
id="content">

<?
include_once('include_header.php');?>

<div
class="clear"></div>

<table
id="rolTable" class="ui-widget ui-widget-content">
<thead>
<tr
class="ui-widget-header">
<th>
количество в.</th>
<th>
наличяе/отсутствие а.</th>
<th>
наличяе/отсутствие R. </th>
</tr>
</thead>

<tbody>
<?

$itogo = 0;
if (count($sek_vor) > 0) {
foreach ($sek_vor as $key => $item) {?>
<tr>
<td
class="kolvo"><?echo number_format($item['kol_vo'],0,'','');?></td>
<td><?=
$item['Avtomatika'];?></td>
<td><?=
$item['rcp1'];?></td>
</tr>
<?
$itogo += $item['baly'];
} }?>
</tbody>

<tfoot>
<tr
style="font-weight:bold;">
<td
colspan="4">ИТОГО</td>
<td
id="tdkolvo"><?echo number_format($itogo,0,'','' ), ' ';?></td>

</tr>
</tfoot>
</table>

<div
id="bottom">
<div
id="email">
<span
class="icon_menu">
</span>

</div>
</div>
<!--end bottom-->

</div><!--end content-->
</div><!--end wrapper-->

</body>
</html>

Спустя 7 минут, 41 секунда (11.03.2012 - 13:59) Visman написал(а):
Раз несколько команд выполняешь в одном SQL запросы, команды должны разделяться точкой с запятой.

Спустя 15 часов, 48 минут, 57 секунд (12.03.2012 - 05:48) maksimon написал(а):
т.е. пред UPDATE поставить ";" и все?)) ...не помогло!!...
просто в самом MsSQL срабатывает!! huh.gif

Спустя 12 минут, 49 секунд (12.03.2012 - 06:01) Visman написал(а):
CREATE TABLE #table_1  ( KodZakaz varchar(255), Vrtv varchar(255),  AVT varchar (255),  rcp1 varchar (255))

INSERT INTO #table_1 (KodZakaz, Vrtv, AVT, rcp1) Select Zakaz.kodZakaz , (Izdelaya .KodVorot) as Vrt , (Zakazano.kodzakazano) as AVT, (Izdelaya .rcp) as RCP1 from Zakaz
inner join Izdelaya on Izdelaya.KodZakaz=Zakaz.KodZakaz
left join Zakazano on Zakazano.KodZakaz=Zakaz.KodZakaz
and Zakazano.TipZakazano='AVT'
WHERE DataCehZakaz>='20110101' and DataCehZakaz<'20120201'

UPDATE #table_1 SET AVT=1 WHERE AVT!=0

SELECT COUNT (KodZakaz) as kod, (AVT) as avtomatika, rcp1 FROM #table_1 group by AVT, rcp1

DROP TABLE #table_1

Спустя 23 минуты, 34 секунды (12.03.2012 - 06:24) maksimon написал(а):
неа... не выходит!!((( а точно временные таблицы в php можно применить??

Спустя 34 минуты, 19 секунд (12.03.2012 - 06:59) Visman написал(а):
Цитата (maksimon @ 12.03.2012 - 11:24)
а точно временные таблицы в php можно применить??

Спустя 5 часов, 17 минут, 9 секунд (12.03.2012 - 12:16) maksimon написал(а):
вообще ни как!!((

Спустя 16 минут, 1 секунда (12.03.2012 - 12:32) maksimon написал(а):
пишет вот что!!
Warning: odbc_fetch_array() [function.odbc-fetch-array]: No tuples available at this result index in C:\....\top_statistika_15.php on line 32


32: while ( $line = odbc_fetch_array( $rs ) )

Спустя 36 минут, 35 секунд (12.03.2012 - 13:08) Visman написал(а):
CREATE TABLE #table_1  ( KodZakaz varchar(255), Vrtv varchar(255),  AVT varchar (255),  rcp1 varchar (255))

INSERT INTO #table_1 (KodZakaz, Vrtv, AVT, rcp1) Select Zakaz.kodZakaz , (Izdelaya .KodVorot) as Vrt , (Zakazano.kodzakazano) as AVT, (Izdelaya .rcp) as RCP1 from Zakaz
inner join Izdelaya on Izdelaya.KodZakaz=Zakaz.KodZakaz
left join Zakazano on Zakazano.KodZakaz=Zakaz.KodZakaz
and Zakazano.TipZakazano='AVT'
WHERE DataCehZakaz>='20110101' and DataCehZakaz<'20120201'

UPDATE #table_1 SET AVT=1 WHERE AVT!=0

SELECT COUNT (KodZakaz) as kod, (AVT) as avtomatika, rcp1 FROM #table_1 group by AVT, rcp1

DROP TABLE #table_1

Все эти страшные запросы можно попробовать одним селектом. примерно таким (за точность не отвечаю):
Select COUNT(Zakaz.kodZakaz) AS kod , Izdelaya .KodVorot AS Vrt, if(Zakazano.kodzakazano != 0, 1, 0) AS AVT, Izdelaya.rcp AS RCP1
from Zakaz
inner join Izdelaya on (Izdelaya.KodZakaz=Zakaz.KodZakaz)
left join Zakazano on (Zakazano.KodZakaz=Zakaz.KodZakaz and Zakazano.TipZakazano='AVT')
WHERE DataCehZakaz>='20110101' and DataCehZakaz<'20120201'
GROUP BY AVT, rcp1

Спустя 4 минуты, 25 секунд (12.03.2012 - 13:13) Placido написал(а):
Del
--------------------------------------
Извиняюсь, не увидел, что это MsSQL.

Спустя 16 часов, 32 минуты, 18 секунд (13.03.2012 - 05:45) maksimon написал(а):
Select COUNT(Zakaz.kodZakaz) AS kod , Izdelaya .KodVorot AS Vrt, 
if(Zakazano.kodzakazano != 0, 1, 0) AS AVT, Izdelaya.rcp AS RCP1 from Zakaz
inner join Izdelaya on (Izdelaya.KodZakaz=Zakaz.KodZakaz)
left join Zakazano on (Zakazano.KodZakaz=Zakaz.KodZakaz
and Zakazano.TipZakazano='AVT')WHERE DataCehZakaz>='20110101'
and DataCehZakaz<'20120201'GROUP BY AVT, rcp1


выдает ошибку на MsSQL server-е:
Сообщение 156, уровень 15, состояние 1, строка 2
Неправильный синтаксис около ключевого слова "if".
Сообщение 102, уровень 15, состояние 1, строка 2
Неправильный синтаксис около конструкции ",".

Спустя 18 минут, 7 секунд (13.03.2012 - 06:03) Visman написал(а):
Цитата (maksimon @ 13.03.2012 - 10:45)
MsSQL server

С этим я не работал.
У микрософта наверняка все как не у людей!?

Спустя 3 минуты, 16 секунд (13.03.2012 - 06:07) maksimon написал(а):
ясно!! sad.gif

Спустя 35 секунд (13.03.2012 - 06:07) maksimon написал(а):
но все равно спасибо!! буду искать альтернативу своему запросу!!

Спустя 24 минуты, 7 секунд (13.03.2012 - 06:31) maksimon написал(а):
кто подскажет по MSSQL?? нужна альиернатива запроса с временной таблицей!!

Спустя 3 часа, 11 минут, 44 секунды (13.03.2012 - 09:43) sergeiss написал(а):
maksimon - мой совет - когда пишешь MSSQL, то вторую букву пиши БОЛЬШОЙ. Иначе большинство будет читать как MySQL smile.gif А это "две большие разницы".

И по делу.

В MSSQL (также как и в PostgreSQL) имеется очень удобная инструкция WITH. Почитай хэлп smile.gif С помощью этой штуковины ты можешь выбрать нужные тебе данные, т.е., по сути, создать временную таблицу. Тут же эти данные можешь использовать в запросе. И это будет вообще один запрос, а не несколько разных.
Удалять такую "временную таблицу" не надо.

Спустя 25 минут, 12 секунд (13.03.2012 - 10:08) maksimon написал(а):
sergeiss
мне нужно для php кода, а он не съедает временные таблицы... и посему нужно это прописать подзапросами!! хз как это сделать!!
huh.gif

Спустя 5 минут, 36 секунд (13.03.2012 - 10:14) sergeiss написал(а):
Цитата (maksimon @ 13.03.2012 - 11:08)
мне нужно для php кода, а он не съедает временные таблицы... и посему нужно это прописать подзапросами!! хз как это сделать!!

Ты сам-то понял, что написал? ПХП к временным таблицам из MSSQL не имеет никакого отношения. Подобно тому, что сотрудники магазина около моего дома не имеют отношения к проблемам охоты на львов племени мумба-юмба, живущего где-то в экваториальной Африке smile.gif

Я предложил тебе, как сделать правильный запрос. Если хочешь - думай, ищи инфо. Будут вопросы - спрашивай.

PS. ПХП работает только с окончательным результатом выборки данных из БД. И шкуру льва мы тоже можем увидеть в нашем магазине - если у племени мумба-юмба будет удачная охота и они потом продадут эту шкуру и её привезут в наш магазин. Но как именно они будут охотится, как её привезут - не волнует никого. Подобно этому ПХП совершенно не интересует, что там творится внутри сервера MSSQL.

Спустя 22 часа, 2 минуты, 10 секунд (14.03.2012 - 08:16) maksimon написал(а):
проблема решена! помогли на другом форуме!!! B)
вот решение:

Select
count(Zakaz.kodZakaz) as kod, case when Zakazano.kodzakazano != 0 then 1 else Zakazano.kodzakazano end as AVT
,Izdelaya.rcp as RCP1
from Zakaz
inner join Izdelaya on Izdelaya.KodZakaz=Zakaz.KodZakaz
left join Zakazano on Zakazano.KodZakaz=Zakaz.KodZakaz
and Zakazano.TipZakazano='AVT'
WHERE DataCehZakaz>='20110101'
and DataCehZakaz<'20120201'
group by case when Zakazano.kodzakazano != 0 then 1 else Zakazano.kodzakazano end
, Izdelaya.rcp
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.