Задавайте вопросы, мы ответим
Вы не зашли.
народ, я чайник, умею тока if писать, но я учусь! ))
помогите запрос составить плииз!!!
есть таблица в которой столбец users в нем записи типа
1
1
5
2
1
3
3
1
надо посчитать сколько раз каждая строка повторяется и вывести 20 самых частых...
заранее спасибо!
Неактивен
Не понял что именно нужно выбрать.
Если нужно выбрать 20 наиболее повторяющихся значений столбца users, то
SELECT users FROM table_name GROUP BY users ORDER BY count(*) DESC LIMIT 20;
Если вывести значения вместе с количеством повторений,то
SELECT count(*),users FROM table_name GROUP BY users ORDER BY 1 DESC LIMIT 20;
Если нужно выбрать полностью те строки, у которых значение столбца users входит в 20ку наиболее повторяющихся, то
SELECT t.* FROM test_table t, (SELECT users FROM test_table GROUP BY users ORDER BY count(*) DESC LIMIT 20) t1 WHERE t.users=t1.users;
Отредактированно vasya (06.03.2008 06:26:09)
Неактивен
спб бро!
Неактивен
а как вывести кол-во повторений напротив?
<?php
$load2 = "SELECT user_id, COUNT(*) AS cnt FROM buy GROUP BY user_id ORDER BY cnt DESC LIMIT 20";
$result2 = mysql_query($load2);
while ($a_row = mysql_fetch_array($result2)){
print $a_row[user_id]."<br>";
}
?>
Неактивен
print $a_row['user_id'] . " : " . $a_row['cnt'] ."<br>";
Неактивен
сбп! с прошлым запросом вы мне очень помогли! надеюсь еще раз выручите!
datetime в формате date("Y-m-d H:i:s");
SELECT * FROM buy WHERE CURDATE() - INTERVAL 1 DAY > datetime
должен выводить записи за сутки (за прошедшие 24 с текущего момента), а выводит вообе бредятину!
помогите решить проблему!
Неактивен
Ligalize написал:
должен выводить записи за сутки (за прошедшие 24 с текущего момента), а выводит вообе бредятину!
помогите решить проблему!
Для этого Вам нужно использовать в запросе знак <
Неактивен
Знак меньше и NOW() вместо CURDATE(), чтобы за 24 часа
Неактивен
Хай! эт снова я! )) очень помогли ваши запросы, но вот столкнулся с очередной траблой... (
как вывести записи за последнюю минуту? заранее спб!
дата хранится в виде 0000-00-00 00:00:00
я хочу сделать скрипт, который по крону будет проверять каждую минуту и если настоящее время будет совбадать с базой, то будет производиться запись в базу...
Отредактированно Ligalize (26.03.2008 07:09:04)
Неактивен
SELECT * FROM tbl WHERE d > now() - INTERVAL 1 MINUTE;
Неактивен
Огромное спб за помощь! Еще вопросик, если я поставлю на крон этот запрос, то запись будет прочитана 1 раз? не будет ли пропусков записей? вопрос конечно дилетантский, ну так и раздел для начинающих!
Неактивен
cron вообще говоря не ровно раз в минуту, а может зависеть от нагруженности системы (еще учтите ситуацию, когда кто-то перезапустил или остановил cron). Рекомендую Вам завести поле used bool default 0 и выставлять его в 1 для всех использованных по назначению записей. Тогда не будет пропусков и повторов, а условие на 1 минуту не требуется.
Неактивен
я понял! огромное спб за помощь!
Неактивен
хм у меня при попытке создать bool создается tinyint :\
Неактивен
Ligalize написал:
хм у меня при попытке создать bool создается tinyint :\
да, это правильно, так и должно быть. Типа bool в MySQL нет, для удобства это синоним tinyint. Занимает он один байт, но выравнивание чаще всего работает так, что все равно 4 байта в памяти занимает. На диске - зависит от механизма хранения.
Неактивен
еще раз спб за разъеснения, очень рад что нашел такой крутой форум!
Неактивен
еще вопросик если можно )))
мож я еще не проснулся, но никак немогу догнать как сделать запрос чтобы вставить запись со временем больше на 1 час чес сейчас!! ) время и дата хранятся в datetime
Неактивен
NOW() + INTERVAL 1 HOUR
Неактивен
спасибо! еще вопросик! у меня никак не подставляется переменная $type_name_out в запросе
вместо нее подставляется ряд имен, имена правильные! но почему-то эта часть запроса $type_name_out=$prcl просто игнорируется...
UPDATE manufacture set money=$compmoney, $type_name_out=$prcl WHERE id=$id_comp LIMIT 1
Неактивен
приведите более широкий контекст запроса, а именно полную строчку из PHP
Неактивен
$up_comp = "UPDATE manufacture set money=$compmoney, $type_name_out=$prcl WHERE id=$id_comp LIMIT 1";
$up_user = "UPDATE users set money=$usermoney WHERE id=$user_id LIMIT 1";
$up_used = "UPDATE job SET used='1' WHERE id=$zint LIMIT 1";
if (mysql_query($up_comp) and mysql_query($up_user) and mysql_query($up_used)){
print "<p><b>ok</b></p>";}
Отредактированно Ligalize (27.03.2008 13:37:44)
Неактивен
все записывается, только то о чем я выше рассказывал игнорируется
Неактивен
Добавьте echo $up_comp;
и напишите какой запрос сформирован
И Вам не помешает
else { die(mysql_error()); } // не к этому вопросу, но на всякий случай
Неактивен
UPDATE manufacture set money=9400, out_lamp=12.2 WHERE id=7 LIMIT 1
но как было в базе 12 ровно, так и осталось!
число хранится в int(11)
Отредактированно Ligalize (27.03.2008 13:54:27)
Неактивен
хе-хе, получается сам на свой вопрос и ответил! а в чем тогда лучше хранить не целые числа?
Неактивен