Есть массив чисел диапазона с 100000 по 1500000 с 1000000 элементами. Нужно с минимальным использованием процессорного времени найти все повторяющиеся числа, как это лучше реализовать?
Делал так:
Потом функцией array_unique() убирал повторяющиеся, НО столкнулся с тем, что ресурс компьютера то не вечный, а такие задачи придётся обрабатывать на vds где оперативы 1гиг от силы... Ребят подскажите пожалуйста!
Доброго здравия форумчане=)
Есть две задачи:
-Из таблицы категорий сделать выборку записей без родителей, с тремя и более потомками
-Из таблицы категорий сделать выборку записей без потомков, но с 2-мя старшими родителями.
Чтобы извлечь все категории нужно это делать рекурсивно в sql?
Нужны ли объединения?
Дружище спасибо, за запрос, за помощь, за оперативность! Не первый раз помогаешь мне. Хотел бы я тебе в жизни пожать руку! Может даш мне пару тройку занятий в скайпе, чтобы я повысил свой скилл=)
Еще просьба, дай пожалуйста литературу которую стоит почитать чтобы повысить скилл в sql!? или ту которую ты читал, или может есть книга с хорошим объяснением, потому как мне вообще все программирование дается тяжело. (Добавление)
Доброго времени суток!
На сайте есть система комментариев, а так же система жалоб на любой из комментариев.
Суть, в админ-панели нужно выводить автора жалобы, текст жалобы А так же автора комментария на который пожаловались, текст комментария. Хочу все сделать за один запрос, подскажите понимающие проблему. Не могу составить правильно запрос.
Разбираться нет времени, так как в пятницу 18 декабря улетаю на камчатку а сайт уже готов - хочется сдать его. Но после прилета я обязательно сяду и буду учить sql. Так как я самоучка я всех возможностей знать не могу, нужно чтобы кто-то подсказал, а я уже по примеру буду разбирать. Заранее спасибо друзья кто откликнется!
SELECT`test_users`.`per_hour_money`,`test_users`.`name`,`test_users`.`ava`,`test_users`.`id`,`test_executors`.`rating`, COUNT(CASE WHEN `test_reviews`.`like`= 1 THEN 1 ELSE NULL END)AS`SUKA_1_LIKE`, COUNT(CASE WHEN `test_reviews`.`like`= 0 THEN 1 ELSE NULL END)AS`SUKA_NULL_LIKE`FROM`test_reviews`LEFTJOIN`test_users`ON`test_users`.`id`=`test_reviews`.`from_id_user`LEFTJOIN`test_executors`ON`test_executors`.`uid`=`test_reviews`.`from_id_user`GROUPBY`from_id_user`
Но тогда он будет показывать только тех у кого есть отзывы, а мне нужно всех извлечь юзеров, вытащив к ним аватарку имя и количество положительных и отрицательных отзывов. (Добавление)
and_07 пишет:
trust пишет:
Но когда хочу узнать количество плохого и хороших отзывов методом COUNT
а чем вам SUM не нравится?
А в чем будет в моем случае принципиальная разница?
-------------------------------- --- Faraon-san - Спасибо за Group by, упустил совсем=) Запрос ниже будет правильным! Всего доброго Вам Faraon-san!=)
SELECT `test_users`.`per_hour_money`,
`test_users`.`name`,
`test_users`.`ava`,
`test_users`.`id`,
`test_executors`.`rating`,
COUNT(CASE WHEN `test_reviews`.`like` = 1 THEN 1 ELSE NULL END) AS `SUKA_1_LIKE`,
COUNT(CASE WHEN `test_reviews`.`like` = 0 THEN 1 ELSE NULL END) AS `SUKA_NULL_LIKE`
FROM `test_reviews`
RIGHT JOIN `test_users` ON `test_users`.`id` = `test_reviews`.`from_id_user`
LEFT JOIN `test_executors` ON `test_executors`.`uid` = `test_reviews`.`from_id_user` GROUP BY `test_users`.`id`
Доброго дня!
Никогда не пишите COUNT(*). Лучше будет COUNT(`id`).
А так же не пишите RAND(*). Лучше писать конечно по другому: http://php.net/manual/en/function.rand.php там комментарии есть в них функции а такой случай.
Все выше методы отбора записей из бд сильно грузят сервер mysql. Если у Вас конечно не 30 тысяч записей в бд у вас пройдет не так болезненно.
Что касается запроса:
Копните в сторону INNER JOIN. Или Скиньте мне дамп вашей таблицы, помогу Вам, если Вы расскажете более подробно задачу, так как то что я прочел - лень вникать в весь сыр бор=)
Доброго времени суток!
Есть таблицы (архитектура таблиц на скриншоте в приложении):
Вытаскиваю о юзере:
Сколько он в час берет за выполнение задания(per_hour_money),
Имя (name),
Аватарку (ava),
Рейтинг (rating),
Какой отзыв - like (Плохой|Хороший)в отзывах есть 1 и 0. То есть 1 - это положительный отзыв, 0 это плохой.
Когда пишу такой запрос:
SELECT
test_users.per_hour_money,
test_users.`name`,
test_users.ava,
test_users.id,
test_executors.rating,
test_reviews.`like`
FROM
test_users
LEFT OUTER JOIN test_reviews ON test_users.id = test_reviews.from_id_user
LEFT OUTER JOIN test_executors ON test_users.id = test_executors.uid
Все работает, выводит всех юзеров и если есть вытаскивает отзыв. Но когда хочу узнать количество плохого и хороших отзывов методом COUNT в mysql то провал... вытаскивает 1 запись. не могу допетритить логику, что я делаю не так? Подскажите пожалуйста кто проникся.
SELECT
test_users.per_hour_money,
test_users.`name`,
test_users.ava,
test_users.id,
test_executors.rating,
COUNT(CASE
WHEN test_reviews.like = 1 THEN 1
ELSE NULL
END) AS SUKA_1_LIKE,
COUNT(CASE
WHEN test_reviews.like = 0 THEN 0
ELSE NULL
END) AS SUKA_NULL_LIKE
FROM
test_users
LEFT OUTER JOIN test_reviews ON test_users.id = test_reviews.from_id_user
LEFT OUTER JOIN test_executors ON test_users.id = test_executors.uid
Делаю так в htaccess: RewriteRule ^u([0-9]+)/([a-z0-9_-]{1,20})$ user.php?id=$1&provider=$2 [L]
Делаю пока без 3го параметра, и не получается... Или я идиот или лыжи не едут... Помогите ребят исправить регулярку так, чтобы работало!
Есть в html5 тип инпута datetime-local Так Вот в него пытаюсь подставить данные из бд, а они не выводятся. все по шаблону делаю.. Но не получается локаль правильно туда внести. в Общем вот код: