Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как правильно составить запрос многотабличный запрос
 
 автор: NikMakken   (29.08.2007 в 17:09)   письмо автору
 
 

Задача такова выводим таблицу с энным колличеством документов (таблица выводится нормально)
А дальше загвоздка
Нужно в скажем последнюю ячейку таблицы вывести даннае из базы соответствующие id документа т.е документы которые соответствуют родительскому

как это зделать в отдельной таблице пожалста а в ячейку ни вкакую не хочет %(

Заранее огромное спасибо!

$query1 = "SELECT * FROM dokum_uch_dokum,dokum_dokum WHERE dokum_uch_dokum.id=dokum_dokum.dokum_id ;";
$result1 = mysql_query("SELECT * FROM dokum_uch_dokum,dokum_dokum WHERE dokum_uch_dokum.id=dokum_dokum.dokum_id ;");
$num_rows = mysql_num_rows($result1);
for($i=1; $i <= $num_rows; $i++)
{
$row1 = mysql_fetch_array($result1);
echo '<td><a href=\'index.php?go=findok&fd='.$row['id'].'\'><b>'.$row1['dokum_id'].'. </b>'.$row1['data'].' №:'.$row1['num'].' Док:'.$row1['name'].' Сумма:'.$row1['summa'].'</a></td>';

   
 
 автор: Loki   (30.08.2007 в 12:38)   письмо автору
 
   для: NikMakken   (29.08.2007 в 17:09)
 

Я вот вопроса не понял. Можно пример того, что должно получиться?

   
 
 автор: NikMakken   (30.08.2007 в 13:55)   письмо автору
 
   для: Loki   (30.08.2007 в 12:38)
 

[code]
№ п/п | № документа |Дата документа |Тип документа |Статья расхода | Сумма | перечень док
1. 12/9999 | 01.08.2007 | Протокол | 226 | 200000 | а тут перечень 1. Счет фактура 2. Накладная и тд

просто ситуация такая что документы в ходящеий скажем протокол собираются в отдельности начиная от Сл. записки и заканчивая платежкой так вот в таблице в крайней ячейке должно отображаться на какой стадии овормеления находимся
В отдельной таблице информация есть а вот в ячейку эту же информацию для наглядности справки никак не могу вставить

   
 
 автор: Loki   (30.08.2007 в 14:03)   письмо автору
 
   для: NikMakken   (30.08.2007 в 13:55)
 

приведите структуру таблиц.
и несколько значений для теста.

   
 
 автор: NikMakken   (30.08.2007 в 14:07)   письмо автору
 
   для: Loki   (30.08.2007 в 14:03)
 

cho '<TABLE BORDER=0 WIDTH=100% CELLSPACING=1 CELLPADDING=1 BGCOLOR=black style="font-size: 10pt">
<tr BGCOLOR=#AFC7BF>';
echo '<td width=1%><center><b>№ п/п</td><td width=1%><center><b>№ документа</td><td width=2%><center><b>Дата документа</td><td width=5%><center><b>Тип документа</td><td width=5%><center><b>Организация</td><td width=10%><center><b>Материально ответственный</td><td width=15%><center><b>Перечень фин док</td>';//выводим шапку
echo '</tr>';
//$query = "SELECT * FROM dokum_uch_dokum,dokum_dokum WHERE dokum_uch_dokum.id=dokum_dokum.dokum_id ;";
$query = "SELECT * FROM dokum_uch_dokum ORDER BY id ASC;";
$result = mysql_query($query);
$i=1.;
while($row=mysql_fetch_array($result))
{
echo '<tr BGCOLOR=white>'; //начинаем строку
echo '<td><center>'.$i.'.</td>';
echo '<td><center>'.$row['num_dok'].'</td>';
echo '<td><center>'.$row['data_dok'].'</td>';
$result1 = mysql_query("SELECT * FROM dokum_tip WHERE id=".$row[tip_id].";");
$r=mysql_fetch_array($result1);//
echo '<td>'.$r['name'].'</td>';
$result2 = mysql_query("SELECT * FROM dokum_organiz WHERE id=".$row[organiz_id].";");
$r2=mysql_fetch_array($result2);//
echo '<td>'.$r2['naim'].'</td>';
$result3 = mysql_query("SELECT * FROM dokum_mo WHERE id=".$row[mo_id].";");
$r3=mysql_fetch_array($result3);//
echo '<td>'.$r3['fam'].' '.$r3['im'].' '.$r3['otch'].'</td>';

Выше приведено то что работает

с низу то что я пробовал вставить в крайнюю ячейку

$result4 = mysql_query("SELECT * FROM dokum_uch_dokum,dokum_dokum WHERE dokum_uch_dokum.id=dokum_dokum.dokum_id ;");
$r4=mysql_fetch_array($result4);//
//$query1 = "SELECT * FROM dokum_uch_dokum,dokum_dokum WHERE dokum_uch_dokum.id=dokum_dokum.dokum_id ;";
//$result1 = mysql_query("SELECT * FROM dokum_uch_dokum,dokum_dokum WHERE dokum_uch_dokum.id=dokum_dokum.dokum_id ;");
//$num_rows = mysql_num_rows($result1);
//for($i=1; $i <= $num_rows; $i++)
//{
//$row1 = mysql_fetch_array($result1);
echo '<td><TABLE><a href=\'index.php?go=findok&fd='.$row['id'].'\'><b>'.$r4['dokum_id'].'. </b>'.$r4['data'].' №:'.$r4['num'].' Док:'.$r4['name'].' Сумма:'.$r4['summa'].'</a> </TABLE></td>';

echo '</td>';
echo '</tr>'; //закрываем строку
$i++;
}
echo "</TABLE>\n";


Перебирая комбинации не пришол к нормальному результату %( не получается ни так ни эдок

   
 
 автор: NikMakken   (30.08.2007 в 14:15)   письмо автору
 
   для: NikMakken   (30.08.2007 в 14:07)
 

а это выводимое в отдельной таблице вот эти записи мне и требуется вставить в ячейку

echo '<TABLE align="center" BORDER=0 WIDTH=50% CELLSPACING=1 CELLPADDING=1 BGCOLOR=black style="font-size: 10pt">
<tr BGCOLOR=#AFC7BF>';
echo '<td width=1%><center><b>№ п/п</td><td width=1%><center><b>№ документа</td><td width=2%><center><b>Дата документа</td><td width=5%><center><b>Тип документа</td><td width=5%><center><b>Статья расхода</td><td width=10%><center><b>Сумма</td><td width=30%><center><b>Находится у</td>';//выводим шапку
echo '</tr>';

$query = "SELECT * FROM dokum_dokum WHERE dokum_id=$fd;";
$result = mysql_query($query);
$num_rows = mysql_num_rows($result);
for($i=1; $i <= $num_rows; $i++)
{
$row = mysql_fetch_array($result);
echo '<tr BGCOLOR=white>'; //начинаем строку
echo '<td><center>'.$i.'.</td>';
echo '<td><center>'.$row['num'].'</td>';
echo '<td><center>'.$row['data'].'</td>';
$result1 = mysql_query("SELECT * FROM dokum_tip_dok WHERE id=".$row[tip_dok_id].";");
$r=mysql_fetch_array($result1);// Этот запрос дает нам названия управлений из табл управлений в табл служебок
echo '<td><center>'.$r['name'].'</td>';
$result2 = mysql_query("SELECT * FROM dokum_tip_stat WHERE id=".$row[tip_stat_id].";");
$r2=mysql_fetch_array($result2);// Этот запрос дает нам названия управлений из табл управлений в табл служебок
echo '<td><center>'.$r2['name'].'</td>';
echo '<td>'.$row['summa'].'</td>';


echo '</td>';
echo '</tr>'; //закрываем строку
}
echo "</TABLE>\n";

   
 
 автор: Loki   (30.08.2007 в 15:12)   письмо автору
 
   для: NikMakken   (30.08.2007 в 14:15)
 

я просил структуру таблиц БД

   
 
 автор: NikMakken   (30.08.2007 в 15:34)   письмо автору
 
   для: Loki   (30.08.2007 в 15:12)
 

id int(11) UNSIGNED Нет auto_increment
num_dok varchar(20) cp1251_general_ci Да NULL
data_dok varchar(20) cp1251_general_ci Да NULL
tip_id int(11) UNSIGNED Нет 0
organiz_id int(11) UNSIGNED Нет 0
mo_id int(11) UNSIGNED Нет 0
первая таблица

id int(11) UNSIGNED Нет auto_increment
dokum_id int(11) UNSIGNED Нет 0
tip_dok_id int(11) UNSIGNED Нет 0
tip_stat_id int(11) UNSIGNED Нет 0
data varchar(12) cp1251_general_ci Да NULL
num varchar(12) cp1251_general_ci Да NULL
summa varchar(10) cp1251_general_ci Да NULL

Вторая таблица

Вот эти данные втророй таблицы должны выходить в ячейке %(

   
 
 автор: Loki   (30.08.2007 в 15:56)   письмо автору
 
   для: NikMakken   (30.08.2007 в 15:34)
 

<?
$result 
mysql_query("SELECT dud.id, dokum_id,  data, num, name, summa FROM dokum_uch_dokum dud JOIN dokum_dokum dd ON dud.id=dd.dokum_id");
while (
$docs=mysql_fetch_assoc($result))
{
$doc_arr[$docs['id']][]=$docs;
}
print_r($doc_arr);


в массиве $doc_arr каждому id из таблицы dokum_uch_dokum соотвествует массив документов из таблицы dokum_dokum соответствующий ему.
а вообще вопрос сформулирован так расплывчато, что я по прежнему его до конца не понял.

   
 
 автор: NikMakken   (30.08.2007 в 16:11)   письмо автору
 
   для: Loki   (30.08.2007 в 15:56)
 

Огромное спасибо

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования