powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выручайте плиз!!
2 сообщений из 2, страница 1 из 1
Выручайте плиз!!
    #38452391
wertuyoz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL
Есть таблица пользователей
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE `users` (
  `user_id` int(11) NOT NULL default '0',
  `birthday` date NOT NULL default '0000-00-00',
  `nickname` char(32) NOT NULL default '',
  `password` char(32) NOT NULL default '',
  PRIMARY KEY  (`user_id`)
)

Необходимо написать два SQL запроса. Первый SQL запрос должен заполнить таблицу данными (например 500000 записей) с произвольно
(или случайно) распределенными датами рождения (наример с 01.01.1950 до 31.12.1995), в том числе и нулевыми (0000-00-00).
Использование процедур не допускается.

Второй SQL запрос должен возвращать информацию о 5-ти ближайших днях рождения пользователей.

Результат запроса должен содержать поля

`user_id`,
`nickname`,
`day_of_birth` - день рождения (число),
`month_of_birth` - месяц рождения (число),
`age` - достигаемый возраст (число).

Ближайший день рождения должен следовать первым в результирующем наборе данных.
...
Рейтинг: 0 / 0
Выручайте плиз!!
    #38452492
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имен у нас нету поэтому их тоже генерим
d1 и d2 это начало и окончание "отчетного периода"

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SET @d1 = '1950-01-01';
SET @d2 = '1995-12-31';

-- SELECT  DATE_ADD(@d1,INTERVAL DATEDIFF(@d2,@d1)* RAND() DAY)  ;

INSERT INTO users (user_id,nickname,birthday)
SELECT @ui:=@ui+1,u.*
FROM(SELECT @ui:=0) AS q,(SELECT nickname,(SELECT  DATE_ADD(@d1,INTERVAL DATEDIFF(@d2,@d1)* RAND() DAY)) AS  birthday
  FROM (SELECT CONCAT(t1.s,t2.s,t3.s,t4.s,t5.s) AS nickname
FROM (SELECT 'a' AS s UNION SELECT 'b'  UNION SELECT 'c'  UNION SELECT 'd'  UNION SELECT 'f'  UNION SELECT 'g'  UNION SELECT 'h'  UNION SELECT 'i'  UNION SELECT 'k'  UNION SELECT 'l'  UNION SELECT 'm'  UNION SELECT 'n' UNION SELECT 'o' UNION SELECT 'p' UNION SELECT 'q' UNION SELECT 'r' UNION SELECT 's' UNION SELECT 't' UNION SELECT 'u' UNION SELECT 'v' UNION SELECT 'w' UNION SELECT 'x' UNION SELECT 'y' UNION SELECT 'z' ORDER BY RAND()) AS t1 ,
  (SELECT 'a' AS s UNION SELECT 'b'  UNION SELECT 'c'  UNION SELECT 'd'  UNION SELECT 'f'  UNION SELECT 'g'  UNION SELECT 'h'  UNION SELECT 'i'  UNION SELECT 'k'  UNION SELECT 'l'  UNION SELECT 'm'  UNION SELECT 'n' UNION SELECT 'o' UNION SELECT 'p' UNION SELECT 'q' UNION SELECT 'r' UNION SELECT 's' UNION SELECT 't' UNION SELECT 'u' UNION SELECT 'v' UNION SELECT 'w' UNION SELECT 'x' UNION SELECT 'y' UNION SELECT 'z' ORDER BY RAND()) AS t2,
  (SELECT 'a' AS s  UNION SELECT 'b'  UNION SELECT 'c'  UNION SELECT 'd'  UNION SELECT 'f'  UNION SELECT 'g'  UNION SELECT 'h'  UNION SELECT 'i'  UNION SELECT 'k'  UNION SELECT 'l'  UNION SELECT 'm'  UNION SELECT 'n' UNION SELECT 'o' UNION SELECT 'p' UNION SELECT 'q' UNION SELECT 'r' UNION SELECT 's' UNION SELECT 't' UNION SELECT 'u' UNION SELECT 'v' UNION SELECT 'w' UNION SELECT 'x' UNION SELECT 'y' UNION SELECT 'z' ORDER BY RAND()) AS t3,
  (SELECT 'a' AS s  UNION SELECT 'b'  UNION SELECT 'c'  UNION SELECT 'd'  UNION SELECT 'f'  UNION SELECT 'g'  UNION SELECT 'h'  UNION SELECT 'i'  UNION SELECT 'k'  UNION SELECT 'l'  UNION SELECT 'm'  UNION SELECT 'n' UNION SELECT 'o' UNION SELECT 'p' UNION SELECT 'q' UNION SELECT 'r' UNION SELECT 's' UNION SELECT 't' UNION SELECT 'u' UNION SELECT 'v' UNION SELECT 'w' UNION SELECT 'x' UNION SELECT 'y' UNION SELECT 'z' ORDER BY RAND()) AS t4 ,
 (SELECT 'a' AS s  UNION SELECT 'b'  UNION SELECT 'c'  UNION SELECT 'd'  UNION SELECT 'f'  UNION SELECT 'g'  UNION SELECT 'h'  UNION SELECT 'i'  UNION SELECT 'k'  UNION SELECT 'l'  UNION SELECT 'm'  UNION SELECT 'n' UNION SELECT 'o' UNION SELECT 'p' UNION SELECT 'q' UNION SELECT 'r' UNION SELECT 's' UNION SELECT 't' UNION SELECT 'u' UNION SELECT 'v' UNION SELECT 'w' UNION SELECT 'x' UNION SELECT 'y' UNION SELECT 'z' ORDER BY RAND()) AS t5 
  LIMIT 500000) AS n)u;


тут несколько символов нехватает, сам добавишь.
ну и вывод:
Код: sql
1.
2.
3.
4.
5.
SELECT u.nickname,u.birthday,DAY(u.birthday) day_of_birth,MONTH(u.birthday) month_of_birth,
 ABS(YEAR(birthday)-YEAR(CURDATE()))-IF(DAYOFYEAR(u.birthday)<=DAYOFYEAR(CURDATE()),0,1) AS age  
FROM users u 
ORDER BY ABS(DATEDIFF(birthday,'1978-11-02')) 
LIMIT 5; 
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выручайте плиз!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]