Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

03.05.2010, 14:05
|
|
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме: 804931
Репутация:
526
|
|
Сообщение от Dark_cracker
имелось введу строки , с тем разобрался ну всёравно не откозался бы от ответа...
Если есть первичный ключ - особой проблемы не вижу. Берем по одному из дублирующихся, и удаляем кортежи с не совпадающими PK.
Если же его нет (мало ли кто, как и зачем проектировал) - то почему бы не наживать себе геморрой и не воспользоваться временными таблицами?
|
|
|

04.05.2010, 17:34
|
|
Участник форума
Регистрация: 04.03.2006
Сообщений: 159
Провел на форуме: 473495
Репутация:
39
|
|
Помогите плз с оптимизацией:
есть запрос:
PHP код:
select w.city,r.name as cityname,w.sunrise,w.sunset,w.date,w.dpart,w.type,w.winddir,w.windspd,w.pressure,w.dampness,w.obstime,w.wcolor,w.temp,w.ncolor,w.ntemp,w.tomcolor,w.tomtemp,r.offset,
if (w.sunrise < date_format(date_sub(now(), interval (14400-(r.offset)) second),'%H:%i:%s')
and w.sunset > date_format(date_sub(now(), interval (14400-(r.offset)) second),'%H:%i:%s'),
timediff(w.sunset,date_format(date_sub(now(), interval (14400-(r.offset)) second),'%H:%i:%s')),
if (date_format(date_sub(now(), interval (14400-(r.offset)) second),'%H:%i:%s') > '00:00:00' and
date_format(date_sub(now(), interval (14400-(r.offset)) second),'%H:%i:%s') < w.sunrise,
timediff(w.sunrise,date_format(date_sub(now(), interval (14400-(r.offset)) second),'%H:%i:%s')),
addtime(timediff('23:59:59',date_format(date_sub(now(), interval (14400-(r.offset)) second),'%H:%i:%s')),w.sunrise))
) as `change`,
if (w.sunrise < date_format(date_sub(now(), interval (14400-(r.offset)) second),'%H:%i:%s')
and w.sunset > date_format(date_sub(now(), interval (14400-(r.offset)) second),'%H:%i:%s'),1,0) as lite,
date_sub(now(), interval (14400-(r.offset)) second) as `localtime`
from weather w left join regions r on w.city=r.city where w.city = $city order by w.id desc limit 1
Там часто используется выражения типа
Код:
date_format(date_sub(now(), interval (14400-(r.offset)) second),'%H:%i:%s'))
для получения локального времени. как можно все это загнать в переменную, и в принципе уменьшить запрос, хотя-бы для экономии трафика?
Используется тут: http://export.selaz.org/weather/
Структура таблиц:
Код:
CREATE TABLE IF NOT EXISTS `regions` (
`id` int(11) NOT NULL auto_increment,
`yanid` int(11) NOT NULL,
`city` int(11) NOT NULL,
`name` varchar(64) NOT NULL,
`offset` int(11) NOT NULL,
`weather` tinyint(1) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `yanid` (`yanid`),
UNIQUE KEY `city` (`city`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `weather` (
`id` int(11) NOT NULL auto_increment,
`city` int(11) NOT NULL,
`sunrise` time NOT NULL,
`sunset` time NOT NULL,
`date` date NOT NULL,
`dpart` tinyint(4) NOT NULL,
`type` varchar(32) NOT NULL,
`windspd` tinyint(4) NOT NULL,
`winddir` varchar(8) NOT NULL,
`pressure` smallint(6) NOT NULL,
`dampness` tinyint(4) NOT NULL,
`obstime` time NOT NULL,
`temp` tinyint(11) NOT NULL,
`wcolor` varchar(6) NOT NULL,
`ncolor` varchar(6) NOT NULL,
`ntemp` tinyint(4) NOT NULL,
`tomcolor` varchar(6) NOT NULL,
`tomtemp` tinyint(4) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `city` (`city`,`date`,`obstime`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Последний раз редактировалось OdaN; 04.05.2010 в 17:39..
|
|
|

05.05.2010, 11:27
|
|
Новичок
Регистрация: 25.06.2007
Сообщений: 16
Провел на форуме: 95371
Репутация:
8
|
|
помогите составить запрос к бд
есть таблица "data " в ней столбец "ALT" в этой таблице 35000 строк
Нужно заменить все данные столбца "ALT" для всех сторок и вставить значение по порядку от 1 - 35000. Как это сделать.
как то так ?
Update "data"
|
|
|

05.05.2010, 23:38
|
|
Новичок
Регистрация: 25.04.2010
Сообщений: 6
Провел на форуме: 38184
Репутация:
0
|
|
Сообщение от dokwill
помогите составить запрос к бд
есть таблица "data " в ней столбец "ALT" в этой таблице 35000 строк
Нужно заменить все данные столбца "ALT" для всех сторок и вставить значение по порядку от 1 - 35000. Как это сделать.
как то так ?
Update "data"
"UPDATE data SET ALT='$i' WHERE id='$i'"
где значение переменной $i от 1 до 35000, перебор осуществляется в цикле.
|
|
|

12.05.2010, 19:54
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме: 3941248
Репутация:
668
|
|
как проверить если в таблице table1 есть запись с номером 1 в колонке id если есть то выбрать колонку value у id = 1, а если записи с id = 1 в table1 нету выташить запись из table2 с id = 99? =)
зарание благодарен ))
|
|
|

12.05.2010, 20:15
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
SELECT * FROM table WHERE id=1 or id=99 limit 1
|
|
|

12.05.2010, 20:49
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме: 3941248
Репутация:
668
|
|
Pashkela ты вообще вопросы читаешь или просто так от балды пишешь?
|
|
|

12.05.2010, 21:13
|
|
Новичок
Регистрация: 25.04.2010
Сообщений: 6
Провел на форуме: 38184
Репутация:
0
|
|
Сообщение от Doom123
как проверить если в таблице table1 есть запись с номером 1 в колонке id если есть то выбрать колонку value у id = 1, а если записи с id = 1 в table1 нету выташить запись из table2 с id = 99?
Если я правильно понял, то будет приблизительно вот так:
PHP код:
<?php
$query = "SELECT value FROM table1 WHERE id =1";
$query1 = "SELECT value FROM table2 WHERE id =99";
if ($result = mysql_query($query)){
// дальнейшие необходимые действия, т.е. выполнилось первое условие существования записи в таблице tabel с id=1
}
else { $result = mysql_query($query1);
// дальнейшие необходимые действия, т.е. выполнилось второе условие существования записи в таблице tabel2 с id=99
}
?>
|
|
|

12.05.2010, 21:15
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме: 3941248
Репутация:
668
|
|
MotoR  до этого я бы и сам додумылся мне нужен 1 запрос )
|
|
|

12.05.2010, 21:24
|
|
Новичок
Регистрация: 25.04.2010
Сообщений: 6
Провел на форуме: 38184
Репутация:
0
|
|
Ну а что мешает объединить эти два запроса через логическое "или" (OR) ?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|