PHP.SU

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

Страниц (4): [1] 2 3 4 »

> Найдено сообщений: 56
trust Отправлено: 24 Августа, 2016 - 05:57:58 • Тема: UPDATE сам на себя! • Форум: SQL и Архитектура БД

Ответов: 0
Просмотров: 40
Здравствуйте!
Есть задача обновить количество подкатегорий у каждой категории. Вложенность неограниченная. Структура на изображении во вложении:



Пытаюсь писать так:
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE categories AS t1
  2. SET count_sub_categories = (
  3.   SELECT COUNT(count_sub_categories) FROM (SELECT COUNT(count_sub_categories) FROM categories WHERE parent_id = t1.id) AS tmp
  4. )


Мне в ответ консоль говорит Column not found: 1054 Unknown column 't1.id' in 'where clause'
trust Отправлено: 14 Июля, 2016 - 19:58:07 • Тема: Поиск повторяющихся чисел • Форум: Вопросы новичков

Ответов: 4
Просмотров: 290
OrmaJever пишет:
trust пишет:
Нужно с минимальным использованием процессорного времени

и это вы собрались делать на php? Это всё равно что на джаве писать программу для минимального потребления памяти

У меня такая задача, начальник сказал, я не знаю как решить кроме как описал выше...
trust Отправлено: 14 Июля, 2016 - 18:57:54 • Тема: Поиск повторяющихся чисел • Форум: Вопросы новичков

Ответов: 4
Просмотров: 290
Всем привет!=)))

Есть массив чисел диапазона с 100000 по 1500000 с 1000000 элементами. Нужно с минимальным использованием процессорного времени найти все повторяющиеся числа, как это лучше реализовать?
Делал так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $i=0;
  3.         while($i<600000)
  4.         {
  5.                 $temp=rand(100000,1500000);
  6.                 $mas[]=$temp;
  7.                 $i++;
  8.                
  9.         }
  10.  

Потом функцией array_unique() убирал повторяющиеся, НО столкнулся с тем, что ресурс компьютера то не вечный, а такие задачи придётся обрабатывать на vds где оперативы 1гиг от силы... Ребят подскажите пожалуйста!
trust Отправлено: 14 Июля, 2016 - 18:51:42 • Тема: Вытащить категории в двух экземплярах. • Форум: SQL и Архитектура БД

Ответов: 0
Просмотров: 22
Доброго здравия форумчане=)
Есть две задачи:
-Из таблицы категорий сделать выборку записей без родителей, с тремя и более потомками
-Из таблицы категорий сделать выборку записей без потомков, но с 2-мя старшими родителями.

Чтобы извлечь все категории нужно это делать рекурсивно в sql?
Нужны ли объединения?

Структура бд:
trust Отправлено: 14 Декабря, 2015 - 15:00:13 • Тема: Вытащить автора жалобы, и автора комментария! • Форум: SQL и Архитектура БД

Ответов: 2
Просмотров: 36
SAD пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT u.name, a.text_abuse, tc.author, tc.text
  2.   FROM abuse a
  3.   JOIN users u ON a.author_abuse_id = u.id
  4.   JOIN task_comments tc ON tc.id = a.comment_id



Дружище спасибо, за запрос, за помощь, за оперативность! Не первый раз помогаешь мне. Хотел бы я тебе в жизни пожать руку! Может даш мне пару тройку занятий в скайпе, чтобы я повысил свой скилл=)

Еще просьба, дай пожалуйста литературу которую стоит почитать чтобы повысить скилл в sql!? или ту которую ты читал, или может есть книга с хорошим объяснением, потому как мне вообще все программирование дается тяжело.
(Добавление)
SAD пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT u.name, a.text_abuse, tc.author, tc.text
  2.   FROM abuse a
  3.   JOIN users u ON a.author_abuse_id = u.id
  4.   JOIN task_comments tc ON tc.id = a.comment_id


Хотя стоп=) Мне же нужно было извлечь аватар, имя и автора жалобы и автора комментария. Как это сделать?
trust Отправлено: 14 Декабря, 2015 - 13:45:26 • Тема: Вытащить автора жалобы, и автора комментария! • Форум: SQL и Архитектура БД

Ответов: 2
Просмотров: 36
Доброго времени суток!
На сайте есть система комментариев, а так же система жалоб на любой из комментариев.

Суть, в админ-панели нужно выводить автора жалобы, текст жалобы А так же автора комментария на который пожаловались, текст комментария. Хочу все сделать за один запрос, подскажите понимающие проблему. Не могу составить правильно запрос.

Разбираться нет времени, так как в пятницу 18 декабря улетаю на камчатку а сайт уже готов - хочется сдать его. Но после прилета я обязательно сяду и буду учить sql. Так как я самоучка я всех возможностей знать не могу, нужно чтобы кто-то подсказал, а я уже по примеру буду разбирать. Заранее спасибо друзья кто откликнется!

Таблицы бд изображены на прикрепленном скриншоте:
trust Отправлено: 09 Ноября, 2015 - 10:40:34 • Тема: Вытащить рейтинг о бзере • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 50
Faraon-san пишет:
Попробуй так:
CODE (SQL):
скопировать код в буфер обмена
  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 1 ELSE NULL END) AS `SUKA_NULL_LIKE` FROM `test_reviews` LEFT 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 `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`
trust Отправлено: 09 Ноября, 2015 - 08:04:08 • Тема: Вложенный запрос, помогите совместить несколько простых • Форум: SQL и Архитектура БД

Ответов: 1
Просмотров: 45
Доброго дня!
Никогда не пишите COUNT(*). Лучше будет COUNT(`id`).
А так же не пишите RAND(*). Лучше писать конечно по другому: http://php.net/manual/en/function.rand.php там комментарии есть в них функции а такой случай.
Все выше методы отбора записей из бд сильно грузят сервер mysql. Если у Вас конечно не 30 тысяч записей в бд у вас пройдет не так болезненно.

Что касается запроса:
Копните в сторону INNER JOIN. Или Скиньте мне дамп вашей таблицы, помогу Вам, если Вы расскажете более подробно задачу, так как то что я прочел - лень вникать в весь сыр бор=)
trust Отправлено: 09 Ноября, 2015 - 07:52:34 • Тема: Вытащить рейтинг о бзере • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 50
Доброго времени суток!
Есть таблицы (архитектура таблиц на скриншоте в приложении):


Вытаскиваю о юзере:
Сколько он в час берет за выполнение задания(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
trust Отправлено: 30 Октября, 2015 - 14:15:25 • Тема: Регулярное выражение для htaccess • Форум: Вопросы новичков

Ответов: 0
Просмотров: 54
Ку форумчанам!
Есть адрес вида: user.php?id=$1&provider=$2&code=$3

Нужно привести к такому виду: http://localhost/u5/vk/code-rj3098rj2340r

Делаю так в htaccess: RewriteRule ^u([0-9]+)/([a-z0-9_-]{1,20})$ user.php?id=$1&provider=$2 [L]
Делаю пока без 3го параметра, и не получается... Или я идиот или лыжи не едут... Помогите ребят исправить регулярку так, чтобы работало!
trust Отправлено: 15 Сентября, 2014 - 14:31:18 • Тема: html 5 и datetime-local • Форум: Вопросы новичков

Ответов: 2
Просмотров: 486
Мелкий пишет:
Время передано неверно. Что в стандарте непонятного?
http://www.w3.org/TR/html-markup/input.datetime-local.html


Было бы все понятно, не спрашивал б помощи.

Вот что в формате даты пишу:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $dates = date("Y-m-dTH:i",$dates);


А вот что выводится, не могу литерал правильно подставить, я ведь описал выше.

(Добавление)
Вопрос решен.

Всего лишь сранные обратные слеши решили проблему.
CODE (htmlphp):
скопировать код в буфер обмена
  1. $dates = date("Y-m-d\\TH:i",$dates);
trust Отправлено: 15 Сентября, 2014 - 13:53:55 • Тема: html 5 и datetime-local • Форум: Вопросы новичков

Ответов: 2
Просмотров: 486
Доброго всем!

Есть в html5 тип инпута datetime-local Так Вот в него пытаюсь подставить данные из бд, а они не выводятся. все по шаблону делаю.. Но не получается локаль правильно туда внести. в Общем вот код:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $dates = $q['dates'];
  2. $dates = strtotime($dates);
  3. $dates = date("Y-m-dTH:i",$dates);


Ну и вставляю вот суда -
CODE (htmlphp):
скопировать код в буфер обмена
  1. <input type="datetime-local" name="dates" value="$dates" />


Пробовал и так:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $dates = date("Y-m-d H:i",$dates);
Но все равно не выводит...
trust Отправлено: 18 Августа, 2013 - 00:21:03 • Тема: Интересное задание для sql • Форум: SQL и Архитектура БД

Ответов: 10
Просмотров: 87
Саныч пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT id, cnt
  2. FROM trust_menu_link AS m
  3. LEFT JOIN (
  4.     SELECT COUNT(0) AS cnt, cat
  5.     FROM trust_tovar AS t
  6.     GROUP BY cat
  7. ) AS sizeof
  8.     ON sizeof.cat = m.id

С вашими названиями таблиц, полей.


Спасибо. Немного неверно, ладно разберусь.
trust Отправлено: 17 Августа, 2013 - 23:16:33 • Тема: Интересное задание для sql • Форум: SQL и Архитектура БД

Ответов: 10
Просмотров: 87
Ребят понять бы еще ваши поля в базах, не понимаю. Покажите ваши структуры хоть чтоб разобрать запрос.

Или подставьте мои имена таблиц и столбцов куда нужно. структура на скриншоте отображена. Я пытаюсь понять не могу догнать..
trust Отправлено: 17 Августа, 2013 - 23:01:10 • Тема: Интересное задание для sql • Форум: SQL и Архитектура БД

Ответов: 10
Просмотров: 87
Саныч пишет:
Ну и при чем тут INNER JOIN?
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT m.`id`, (
  2.     SELECT COUNT(0)
  3.     FROM `goods` AS g
  4.     WHERE g.`cat` = m.`id`
  5. ) AS sizeof
  6. FROM `menu` AS m
?


Ничего себе вы мастер=))) Надеюсь вы работаете там где надо=)

Прошу помогите и мне с этим запросом! Я не все в нем понимаю.

Можно вас попросить поставить мои данные туда? или объяснить ваш код какое поле за что отвечает?

Страниц (4): [1] 2 3 4 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB