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

Форум MySQL

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

 

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

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

тема: Подскажите с запросом
 
 автор: *m*   (09.12.2009 в 15:23)   письмо автору
 
 

Всем доброго времени суток!)

Скажите, можно ли как-нибудь построить запрос к БД, со следующим условием:

SELECT main FROM articles ORDER BY id , но где запись в поле main не равна нулю?

Счас попытаюсь обяснить что нужно:

Когда поле не заполняеться, туда автоматом, записываеться - НОЛЬ.
Нужно чтобы выводилась последняя запись из поля main сортируясь по id.
Но когда у последнего id например в поле main - 0, то выводилась запись имеющая смысл.. какой-то текст, где запись не являеться нулем вобщем.. Вот как-то так..

  Ответить  
 
 автор: Лена   (09.12.2009 в 16:36)   письмо автору
 
   для: *m*   (09.12.2009 в 15:23)
 


SELECT main 
FROM articles
WHERE main <>0
ORDER BY id  DESC 
LIMIT 1 


Не понятно, в main пишется 0 или NULL?

  Ответить  
 
 автор: *m*   (09.12.2009 в 17:28)   письмо автору
 
   для: Лена   (09.12.2009 в 16:36)
 

ага записываеться, как раз 0..

а в таком, случае выдает: Ошибка(Нет записей)


<?
$query_TOD 
=("SELECT main FROM articles WHERE main <>0 ORDER BY id DESC LIMIT 1");
$res_tod mysql_query($query_TOD);
if(!
$res_tod) exit("Ошибка - ".mysql_error());
if(
mysql_num_rows($res_tod) > 0$myrow_tod mysql_fetch_array($res_tod);
else exit(
"Ошибка(Нет записей) - ".mysql_error());
?>

  Ответить  
 
 автор: Лена   (09.12.2009 в 22:09)   письмо автору
 
   для: *m*   (09.12.2009 в 17:28)
 

А вы пробовали вывести сам запрос?
if(!$res_tod) exit("Ошибка в " . $query_TOD . "- ".mysql_error());

  Ответить  
 
 автор: ols   (09.12.2009 в 17:31)   письмо автору
 
   для: Лена   (09.12.2009 в 16:36)
 

>SELECT main FROM articles ORDER BY id , но где запись в поле main не равна нулю?

FROM articles 
WHERE main != 0 
ORDER BY id  DESC  
LIMIT 1 

  Ответить  
 
 автор: *m*   (09.12.2009 в 17:39)   письмо автору
 
   для: ols   (09.12.2009 в 17:31)
 

аналогично с предидущим вариантом, выдает что нет якобы записей..

  Ответить  
 
 автор: Trianon   (09.12.2009 в 18:12)   письмо автору
 
   для: *m*   (09.12.2009 в 17:39)
 

Так наверное и вправду нет записей?

Чем очевидное постить, лучше бы фрагмент дампа привели, из которого следовало бы, что они там есть.

  Ответить  
 
 автор: *m*   (09.12.2009 в 18:29)   письмо автору
 
   для: Trianon   (09.12.2009 в 18:12)
 

ну они там есть.. 3 записи так точно..
счас вопрос получается в том, что условие запроса не хочет выполняться..

  Ответить  
 
 автор: Trianon   (09.12.2009 в 18:46)   письмо автору
 
   для: *m*   (09.12.2009 в 18:29)
 

Вы понимаете, что означает "привести фрагмент дампа"?

Наслово здесь не верят никому.
Не потому что обмануть хотите, а потому что наверняка разглядеть не можете.

Фрагмент дампа должен содержать в том числе и структуру. Все это с помощью phpMyAdmin берется за пару секунд.

  Ответить  
 
 автор: *m*   (10.12.2009 в 14:13)   письмо автору
 
   для: Trianon   (09.12.2009 в 18:46)
 

вот дамп БД


CREATE TABLE `articles` (
  `id` int(2) NOT NULL auto_increment,
  `title` varchar(255) NOT NULL,
  `desc` text,
  `main` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;



INSERT INTO `articles` VALUES (1, 'Первая запись', 'Краткое содержание', '0');
INSERT INTO `articles` VALUES (2, 'Вторая запись', 'Краткое содержание', 'Полное содержание');
INSERT INTO `articles` VALUES (3, 'Третья запись', 'Краткое содержание', '0');

  Ответить  
 
 автор: Trianon   (10.12.2009 в 14:17)   письмо автору
 
   для: *m*   (10.12.2009 в 14:13)
 

Ничего похожего на 0 я там не увидел. Увидел вместо этого '0'
Тип поля меж тем не способствует сравнениям с его содержимым.
Почему Вы не сделали поле NULL DEFAULT NULL?
Всё стало бы куда проще.

  Ответить  
 
 автор: *m*   (10.12.2009 в 14:42)   письмо автору
 
   для: Trianon   (10.12.2009 в 14:17)
 

Ничего похожего на 0 я там не увидел. Увидел вместо этого '0'

И правда, как это я сам не увидел))) Спасибо.

Тип поля меж тем не способствует сравнениям с его содержимым.
Почему Вы не сделали поле NULL DEFAULT NULL?

А для того чтобы тип поля начал соответсвовать, нужно поставить DEFAULT NULL?

  Ответить  
 
 автор: Trianon   (10.12.2009 в 15:21)   письмо автору
 
   для: *m*   (10.12.2009 в 14:42)
 

нет. Это нужно, чтобы можно было выполнять проверки вида WHERE main IS NOT NULL
или по русски - "такие, в которых main заполнено данными".

  Ответить  
 
 автор: *m*   (10.12.2009 в 16:13)   письмо автору
 
   для: Trianon   (10.12.2009 в 15:21)
 

Спасибо большое за совет, учту, действительно, разумнее делать именно так.

  Ответить  
Rambler's Top100
вверх

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