Выборка и вывод из 3х таблиц.

Нужно при запросе по номеру awb вывести из 3х таблиц значения.Выборка и вывод из таблицы otchet полностью рабочие.

Не получается сделать вывод значений summa из таблицы zatrat_tola и summa1 из таблицы zatrat_dima — пишет ошибку Query was empty.

Код такой

 // Формируем текст запроса к базе
 if ($posted === 'awb') {
 $query_string = "SELECT * FROM otchet WHERE `awb`='$text'";
 } else if ($posted === 'client') {
 $query_string = "SELECT * FROM otchet WHERE `client`='$text'";
 } else if ($posted === 'birki_s') {
 $query_string = "SELECT * FROM otchet WHERE `birki_s`='$text'";
 } else if ($posted === 'phone') {
 $query_string = "SELECT * FROM otchet WHERE `phone`='$text'";  
 } else if ($posted === 'datatime') {
 $query_string = "SELECT * FROM otchet WHERE `datatime`='$text'";
 } else if ($posted === 'awb') {
 **$query_string1 = "SELECT * FROM zatrat_tola WHERE 'awb'='$text'";
 } else if ($posted === 'awb') {
 $query_string2 = "SELECT * FROM zatrat_dima WHERE    'awb1'='$text'";**    
 } else {
 echo 'Вы выбрали некорректное значение: ' . $posted;
 exit();
 }

 $dbResult = mysql_query($query_string) or die(mysql_error());
 **$dbResult1 = mysql_query($query_string1) or die(mysql_error());
 $dbResult12 = mysql_query($query_string2) or die(mysql_error());**

 while ($row = mysql_fetch_assoc($dbResult)) 
 $rows[] = $row;

 **while ($row1 = mysql_fetch_assoc($dbResult1))  
 $rows1[] = $row1;
 while ($row2 = mysql_fetch_assoc($dbResult2)) { 
 $rows2[] = $row2;**
 }


 } else {
 echo "Введите текст поискового запроса";
 exit();
 }

 <td><?php echo $row['awb']?></td>
        <td><?php echo $row['client']?></td>
        <td><?php echo $row['phone']?></td>
        <td><?php echo $row['datatime']?></td>
        <td><?php echo $row['birki_s']?></td>
        <td><?php echo $row['birki_po']?></td>
        <td><?php echo $row['kol_mest']?></td>
        <td><?php echo $row['ves']?></td>
        <td><?php echo $row['itogo']?></td>
        <td><?php echo $row['plus']?></td>
        <td><?php echo $row['vsego']?></td>
        <td><?php echo $row['umnozit_na']?></td>
        <td><?php echo $row['primechanie']?></td>

 <td>Сумма затрат</td>
        **<td><?php echo $row1['summa']?></td>
        <td><?php echo $row2['summa1']?></td>**

Пока не добавляю, то что отметил темным все работает , как только добавляю пишет эту ошибку.
Скажите пожалуйста, что неправильно? И как сделать правильно?
Спасибо.

пишет ошибку Query was empty.

Вы где-то пытаетесь выполнить пустой запрос. Тексты трех запросов у вас заносятся в переменные $query_string1, $query_string2 и $query_string3.

} else if ($posted === 'awb') {
    $query_string2 = "SELECT * FROM zatrat_dima WHERE    'awb1'='$text'";
}

При выполнении условия if ($posted === 'awb') в переменную $query_string2 записывается текст запроса. Переменные $query_string и $query_string1 на этом этапе еще не существуют.

Затем происходит выполнение всех трех запросов, два из которых вы еще не создали — $query_string и $query_string1.

$dbResult = mysql_query($query_string) or die(mysql_error());
$dbResult1 = mysql_query($query_string1) or die(mysql_error());
$dbResult12 = mysql_query($query_string2) or die(mysql_error());

В первой строке выполняется пустой запрос, генерируется ошибка и вызывается die(mysql_error()). При выполнении die() скрипт умирает. Поэтому остальные запросы не выполняются.

Возможное решение — проверять существование переменных $query_string и $query_string1 перед выполнением запроса:

if (!empty($query_string)) {
    $dbResult = mysql_query($query_string) or die(mysql_error());
} else {
    $dbResult = null;
}

if (!empty($query_string1)) {
    $dbResult1 = mysql_query($query_string1) or die(mysql_error());
} else {
    $dbResult1 = null;
}

if ($dbResult !== null) {
     while ($row = mysql_fetch_assoc($dbResult)) {
          $rows[] = $row;
     }
}
// ... И так далее

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

 if ($posted === 'awb') {
    $query_string = "SELECT * FROM otchet WHERE `awb`='$text'";

на вот такую

  if ($posted === 'awb') {
     $query_string = "SELECT * FROM otchet, zatrat_tola, zatrat_dima WHERE otchet.`awb`='$text' AND zatrat_tola.`awb` ='$text' AND zatrat_dima.`awb1` ='$text'";

ну и конечно вывод

    <tr>
         <td>Сумма затрат</td>
         <td><?php echo $row['summa']?></td>
         <td><?php echo $row['summa1']?></td>
    </tr>

и больше ничего не менять , то все работает как надо — идет выборка из всех трех таблиц и пишет куда надо :)
Какие могут быть подводные камни или это решение тоже сгодится ?

Второй пример со сложным запросом оставляйте. Более изящно (IMHO). По скорости выполнения разницы здесь никакой.

Спасибо :)
След вопрос решил запостить тоже в этой теме :
Сейчас все что я хотел работает , но нужно на этой же странице вывести еще одну табличку , которая в базу может не идти , но в ней должны быть несколько формул из получаемых ячеек таблиц .
Если коротко <td><?php echo $vsego ?></td> умножить на 0,99 , потом из того что получится минус (<td><?php echo $row['summa']?></td> плюс <td><?php echo $row['summa1']?></td>) и потом то что получится умножить на ... потом просто печать на принтер и всё :)
Как умножить , сложить и т.п. я знаю ,
Я не знаю какой командой или вообще как взять эти данные из уже готовой страницы ?

Хм , оказалось всё просто :)
Всем спасибо за участие.
Осталось выяснить как округлить до целого , но это наверно уже мелочи .

$pribyl=$vsegon-$row['summa']-$row['summa1'];

Осталось выяснить как округлить до целого

Функция ceil() — округляет число до целого в большую сторону. Функция floor() — в меньшую.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.