SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 24.01.2010 21:18:10

YG
Участник
Зарегистрирован: 24.01.2010
Сообщений: 8

Помогите с запросом

Здравствуйте!
Нужен запрос который ищет все строки содержащие определенное слово в определенном столбце.
Вот структура таблицы:
CREATE TABLE IF NOT EXISTS `cl` (
  `id` int(11) NOT NULL auto_increment,
  `Date` date NOT NULL default '0000-00-00',
  `Time` time NOT NULL default '00:00:00',
  `Time Zone` varchar(20) NOT NULL default '',
  `Currency` varchar(200) NOT NULL,
  `Description` text NOT NULL,
  `Importance` varchar(20) NOT NULL default '',
  `Actual` varchar(20) NOT NULL default '',
  `Forecast` varchar(20) NOT NULL default '',
  `Previous` varchar(20) NOT NULL default '',
  `Cur` varchar(20) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=133 ;

В поле Cur всегда содержатся слова из 3 букв, к примеру мне нужно найти все строки со словом AUD в этом поле.
Я сделал следующий запрос:

<?php
$curdate=date("Y-m-d");
$curtime=date("H:i");
$dt_elements = explode('-',$curdate);
$tm_elements = explode(':',$curtime);
$timestamp = mktime($tm_elements[0]-4,$tm_elements[1],0,$dt_elements[1],$dt_elements[2],$dt_elements[0]);
$curtime=strftime('%H:%M:%S',$timestamp);
$curdate=strftime('%Y-%m-%d',$timestamp);
$result=mysql_query("Select * From `cl` Where `Cur` Like 'AUD' AND `Time`>'$curtime'") or die ("error on request:<br>$sql <br>".mysql_error());
echo $result;
?>

echo мне выдает вместо строк следующее: Resource id #4
Подскажите что я делаю не так?

Отредактированно YG (24.01.2010 21:20:02)

Неактивен

 

#2 24.01.2010 21:42:34

YG
Участник
Зарегистрирован: 24.01.2010
Сообщений: 8

Re: Помогите с запросом

Немного подумав.....
Вернее мне нужны не все строки целиком, а только лишь значения из поля "Description".
То есть нужно все что содержится в поле "Description" из всех строк содержащих в поле "Cur" значение "AUD"
Немного запутано конечно smile

Неактивен

 

#3 24.01.2010 21:50:48

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Помогите с запросом

$query = "SELECT Description FROM cl WHERE Cur = 'AUD'";
$result=mysql_query($query) or die ("error on request:<br>$sql <br>".mysql_error());
while ($row = mysql_fetch_assoc($result)) // значит "выполнять, пока в $row что-то попадает", т.е. пока не кончатся данные в $result
{ echo $row['Description'] . '<br/>'; }


Соответственно, если нужны значения других колонок - добавляете их в SELECT и обращаетесь в PHP-коде через $row['имя_колонки'].

Неактивен

 

#4 25.01.2010 00:34:20

YG
Участник
Зарегистрирован: 24.01.2010
Сообщений: 8

Re: Помогите с запросом

Огромное спасибо!
Но снова проблема... нужно чтобы из базы выводились значения относительно текущего времени, то есть только те события которые предстоят, а не уже прошедшие, у каждой строки есть элемент "Date" формат "2010-хх-хх" и "Time" = "хх:хх:хх" изменил запрос так:

$query = "SELECT Description FROM cl WHERE Cur = 'AUD' AND `Date`>='$curdate' Limit 8";

Но получается что выводятся данные с текущего числа, то есть все подряд за текущий день, в том числе и те которые прошли, попробовал так:
$query = "SELECT Description FROM cl WHERE Cur = 'AUD' AND `Date`>='$curdate' AND `Time`>='$curtime' Limit 8";

Но тогда выводятся все строки за все дни после времени содержащегося в $curtime. То есть если
$curtime="12:01:00"
то выводятся все данные с таблицы содержащие в поле `Date` значение больше этого времени, причем независимо от условия
`Date`>='$curdate'

Что я опять делаю не так?

Неактивен

 

#5 25.01.2010 03:43:20

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Помогите с запросом

Используйте NOW().

Неактивен

 

#6 25.01.2010 12:46:00

YG
Участник
Зарегистрирован: 24.01.2010
Сообщений: 8

Re: Помогите с запросом

Спасибо, все вроде правильно работает!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson