|
|
|
| Всем доброго времени суток!)
Скажите, можно ли как-нибудь построить запрос к БД, со следующим условием:
SELECT main FROM articles ORDER BY id , но где запись в поле main не равна нулю?
Счас попытаюсь обяснить что нужно:
Когда поле не заполняеться, туда автоматом, записываеться - НОЛЬ.
Нужно чтобы выводилась последняя запись из поля main сортируясь по id.
Но когда у последнего id например в поле main - 0, то выводилась запись имеющая смысл.. какой-то текст, где запись не являеться нулем вобщем.. Вот как-то так.. | |
|
|
|
|
|
|
|
для: *m*
(09.12.2009 в 15:23)
| |
SELECT main
FROM articles
WHERE main <>0
ORDER BY id DESC
LIMIT 1
|
Не понятно, в main пишется 0 или NULL? | |
|
|
|
|
|
|
|
для: Лена
(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());
?>
|
| |
|
|
|
|
|
|
|
для: *m*
(09.12.2009 в 17:28)
| | А вы пробовали вывести сам запрос?
if(!$res_tod) exit("Ошибка в " . $query_TOD . "- ".mysql_error()); | |
|
|
|
|
|
|
|
для: Лена
(09.12.2009 в 16:36)
| | >SELECT main FROM articles ORDER BY id , но где запись в поле main не равна нулю?
FROM articles
WHERE main != 0
ORDER BY id DESC
LIMIT 1
|
| |
|
|
|
|
|
|
|
для: ols
(09.12.2009 в 17:31)
| | аналогично с предидущим вариантом, выдает что нет якобы записей.. | |
|
|
|
|
|
|
|
для: *m*
(09.12.2009 в 17:39)
| | Так наверное и вправду нет записей?
Чем очевидное постить, лучше бы фрагмент дампа привели, из которого следовало бы, что они там есть. | |
|
|
|
|
|
|
|
для: Trianon
(09.12.2009 в 18:12)
| | ну они там есть.. 3 записи так точно..
счас вопрос получается в том, что условие запроса не хочет выполняться.. | |
|
|
|
|
|
|
|
для: *m*
(09.12.2009 в 18:29)
| | Вы понимаете, что означает "привести фрагмент дампа"?
Наслово здесь не верят никому.
Не потому что обмануть хотите, а потому что наверняка разглядеть не можете.
Фрагмент дампа должен содержать в том числе и структуру. Все это с помощью phpMyAdmin берется за пару секунд. | |
|
|
|
|
|
|
|
для: 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');
|
| |
|
|
|
|
|
|
|
для: *m*
(10.12.2009 в 14:13)
| | Ничего похожего на 0 я там не увидел. Увидел вместо этого '0'
Тип поля меж тем не способствует сравнениям с его содержимым.
Почему Вы не сделали поле NULL DEFAULT NULL?
Всё стало бы куда проще. | |
|
|
|
|
|
|
|
для: Trianon
(10.12.2009 в 14:17)
| | Ничего похожего на 0 я там не увидел. Увидел вместо этого '0'
И правда, как это я сам не увидел))) Спасибо.
Тип поля меж тем не способствует сравнениям с его содержимым.
Почему Вы не сделали поле NULL DEFAULT NULL?
А для того чтобы тип поля начал соответсвовать, нужно поставить DEFAULT NULL? | |
|
|
|
|
|
|
|
для: *m*
(10.12.2009 в 14:42)
| | нет. Это нужно, чтобы можно было выполнять проверки вида WHERE main IS NOT NULL
или по русски - "такие, в которых main заполнено данными". | |
|
|
|
|
|
|
|
для: Trianon
(10.12.2009 в 15:21)
| | Спасибо большое за совет, учту, действительно, разумнее делать именно так. | |
|
|
|