Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2011, 12:10   #1
nuevegramodelamor
Пользователь
 
Регистрация: 13.09.2009
Сообщений: 75
По умолчанию [запрос к Бд] не работает условие

PHP код:
$query=mysql_query("Select * FROM `List_entrance` Join(List_Item,List_Firm,List_balance) ON (`List_entrance`.`id_item`=`List_Item`.`id` AND `List_Item`.`id_firm`=`List_Firm`.`id` AND `List_balance`.`id_item` =`List_entrance`.`id_item`) WHERE `List_Firm`.`id` = $List_Firm and Year(`List_entrance`.`date_entrance`)=$Year AND MONTH(`List_balance`.`date`)=MONTH(`List_entrance`.`date_entrance`)") or die(mysql_error());

            echo 
"<br><table border='0'><tr style=\"background-color:#c0c0c0\"><td>Название</td><td>Дата поступления</td><td>Цена</td><td>Количество</td><td>Остаток</td><td>Производитель</td>\n";

            while(
$row=mysql_fetch_array($query))
                {                
                    echo 
"<tr>\n";
                    echo 
"<td>".$row[Name_Item]."</td>\n";
                    echo 
"<td>".$row[date_entrance]."</td>\n";
                    echo 
"<td>".$row[cost]."</td>\n";
                    echo 
"<td>".$row[count_entrance]."</td>\n";
                    echo 
"<td>".$row[count_list]."</td>\n";
                    echo 
"<td>".$row[Name_Firm]."</td>\n";
                    echo 
"</tr>\n";
                } 
Вот это условие AND MONTH(`List_balance`.`date`)=MONTH( `List_entrance`.`date_entrance`) должно было бы выводить остаток на тот месяц, на которое и поступление было, но!
Код:
Название	Дата поступления	Цена	Количество	Остаток	Производитель
2-4А	2012-04-26	20000	30	5	МастерТорг
2-4А	2012-04-26	20000	30	8	МастерТорг
Должна была вывестись только последняя запись, а вылезла ещё и с остатком "5" из другого месяца и даже другого года =\
Вложения
Тип файла: zip Shop.sql.zip (1.2 Кб, 10 просмотров)
nuevegramodelamor вне форума Ответить с цитированием
Старый 26.04.2011, 13:07   #2
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Потому что "AND MONTH(`List_balance`.`date`)=MONTH( `List_entrance`.`date_entrance`)" проверяет ТОЛЬКО соответствие месяца.. Месяцы у двух записей одинаковые (04), соответственно и выводит эту строку. Год проверяется только по таблице List_entrance.
Остальные же все условия выполняются. Поэтому выводится эта линия. Нужно либо проверять год в таблице List_balance, либо ввести в условие ON сверку года по двум таблицам ON (YEAR(`List_entrance`.`date_entranc e`)=YEAR(`List_balance`.`date`) AND ...

З.Ы. Очень плохая, совершенно беспорядочная череда заглавных и прописных букв. Скоро вам это отольётся ошибками, которые будете искать вечность.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 26.04.2011, 14:17   #3
nuevegramodelamor
Пользователь
 
Регистрация: 13.09.2009
Сообщений: 75
По умолчанию

О, заработало, благодарю)
nuevegramodelamor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
существования перменной не работает условие Pein95 PHP 1 18.04.2011 08:30
существования перменной не работает условие Pein95 PHP 4 17.04.2011 11:23
Обьясните как работает программа условие и код есть max0072233 Общие вопросы C/C++ 0 16.01.2011 16:09
С#.NET. Маленькая проблемка - условие не работает так , как надо Ksy Общие вопросы .NET 11 24.12.2009 21:07
первый курс. условие неправильно работает Котик Общие вопросы C/C++ 15 28.11.2009 00:56