Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: mysql запросы бд

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: проблема
LEONeso
Отправлено: 22 Февраля, 2011 - 11:16:29
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




Здравствуйте, никак не могу понять, почему не работает вывод информации.

Проверяет данные таким образом (работает, о не так как надо).
PHP:
скопировать код в буфер обмена
  1.         $result=mysql_query ("SELECT * FROM stat WHERE status='1' AND id=(SELECT id FROM stat WHERE status='1' ORDER BY date DESC LIMIT 1)");


естественно во втором условии он игнорирует


при попытки поставить после id,status, он выводит ошибки, а требуется вывести информацию о последней записи по id с учетом даты и статуса т.к. они разные.

Как вывести последнюю запись по id с учетом даты и статуса... возможно порядок не верен? Я запутался.


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
Быколай
Отправлено: 22 Февраля, 2011 - 12:47:18
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




LEONeso пишет:
требуется вывести информацию о последней записи по id с учетом даты и статуса т.к. они разные.

не совсем понятно что хотите получить. id - primary/unique?
Приведённый вами запрос у меня отработал (то есть вывел последнюю по дате строку со status =1) нормально на таблице вида
CODE (sql):
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE `stat` (
  3.         `id` INT(10) NULL AUTO_INCREMENT,
  4.         `status` TINYINT UNSIGNED NULL DEFAULT '0',
  5.         `date` DATETIME NULL,
  6.         PRIMARY KEY (`id`)
  7. )
  8.  

Может вам надо
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT * FROM stat s
  3.         WHERE 1
  4.         AND s.STATUS = 1
  5.         ORDER BY s.date DESC
  6.         LIMIT 0, 1
  7.  

??

(Отредактировано автором: 22 Февраля, 2011 - 12:51:03)

 
 Top
LEONeso
Отправлено: 22 Февраля, 2011 - 13:01:09
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




Быколай, дело в том, что когда я выполняю 2 запроса, с разными статусами типа 1 и 2, то он выполняет их 2, но при этом первый постоянно будет выполняться т.к. последняя запись будет со статусом 1, а он будет искать 2 и постоянно писать, что запись не найдена ну далее попытка создать запись... с полным провалом.

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


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
Быколай
Отправлено: 22 Февраля, 2011 - 13:20:49
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




LEONeso пишет:
выполняю 2 запроса, с разными статусами типа 1 и 2, то он выполняет их 2, но при этом первый постоянно будет выполняться т.к. последняя запись будет со статусом 1, а он будет искать 2 и постоянно писать, что запись не найдена

то есть на деле у вас происходит
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT * FROM stat WHERE STATUS='1' AND id=(SELECT id FROM stat WHERE STATUS='2' ORDER BY date DESC LIMIT 1)
  3.  

Не понял ничего не понял...
То есть вы не знаете заранее какое значение status надо извлечь?
LEONeso пишет:
ну далее попытка создать запись

Что записывать собираетесь?

LEONeso пишет:
Ну собственно нужно чтоб запрос выводил последнюю запись с учетом даты статуса и id... хотя id не обязателен, но для полной точности пригодится.

Структура таблица принципиально такая как я выше предполагал?

Пока вы задачу не достаточно внятно изложили, мне кажется...
 
 Top
LEONeso
Отправлено: 22 Февраля, 2011 - 14:09:49
Post Id



Посетитель


Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010  
Откуда: Россия, Москва


Помог: 1 раз(а)




Быколай, нет, в начале идет запрос с статусом 1 и потом уже аналогичный запрос (с циклами и условиями), но разница в статусе 2. При этом, первый запрос проверяет соответствие статистики (последняя запись, с учетом статуса) с ранее собранными данными, при необходимости он добавляет новую запись статистики.

Далее второй запрос делает 1 в 1, но при этом он зацикливается и для него последняя запись появляется в виде "пустоты" ,но с id записи статистики со статусом 1, таким образом, он что-то пытается предпринять, но условия получаются истиной, но добавить запись он не может т.к. далее условие становится ложью... вообще не понятные циклы действий.

Буду пробовать, как описали выше.
(Добавление)
Быколай, ваш способ выдавал постоянно истину, когда как должен выдавать лож, но я разобрался в чем дело, все изначально работало верно, дело оказалось вообще в другом... в процессе добавления новой записи ,если последняя не актуальна.

Вот заморочил себе и другим мозг Закатив глазки

Спасибо за помощь.


-----
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
 
 Top
Быколай
Отправлено: 22 Февраля, 2011 - 16:08:26
Post Id



Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




не за что, бывает Улыбка!
 
 Top
JustUserR
Отправлено: 23 Февраля, 2011 - 18:48:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




LEONeso пишет:
Ну собственно нужно чтоб запрос выводил последнюю запись с учетом даты статуса и id
Для осуществления решения предполагаемой задачи, заключающейся в сортировке информационных полей заданной таблицы БД в соответствии с критерием их оригинального последовательного расположения, и осуществления выбора заключающего элемента данного списка, возможно использование конструкции заключающйся в предшествующем определении количества зарегистрированных информационных полей в таблице, и обеспечения выбора последнего элемента на основании применения конструкции LIMIT


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB