Дублирование записей таблицы

ccop

Новичок
Дублирование записей таблицы

Есть таблица: имя, фамилия, дата рождения, дата смерти
*обе даты в формате 0000-00-00

Задача: нужно построить список дат за критерием месяц.
Т.е. предположим я выбрал 2-й месяц оно мне должно вывести всех пользователей, которые народились в этот месяц и всех пользователей, которые умерли.
Проблема в том, что если человек народился и умер в один и тот же месяц, его нужно продублировать... + надо отсортировать список в порядке убывания. - никак не получается составить такой запрос, что бы все нормально работало.

Вот запрос для даты рождения:

[SQL]
SELECT id, ua_name as name, ua_surname as surname, DATE_FORMAT(birthday, '%Y') as rb_y, DATE_FORMAT(birthday, '%m') as rb_m, DATE_FORMAT(birthday, '%d') as rb_d, DATE_FORMAT(deadday, '%Y') as rd_y, DATE_FORMAT(deadday, '%m') as rd_m, DATE_FORMAT(deadday, '%d') as rd_d FROM users WHERE type = 2 GROUP BY id HAVING rb_m = 2 ORDER BY rb_d ASC
[/SQL]

Спасибо большое!
 

ccop

Новичок
Panchous, я не разобрался с этим оператором, я пробывал через join'ы
 

ccop

Новичок
Вот я сделал так:
[SQL]
(
SELECT id, ua_name AS name, ua_surname AS surname, DATE_FORMAT( birthday, '%Y' ) AS rb_y, DATE_FORMAT( birthday, '%m' ) AS rb_m, DATE_FORMAT( birthday, '%d' ) AS rb_d, DATE_FORMAT( deadday, '%Y' ) AS rd_y, DATE_FORMAT( deadday, '%m' ) AS rd_m, DATE_FORMAT( deadday, '%d' ) AS rd_d
FROM users
WHERE TYPE =2
GROUP BY id
HAVING (
rb_m = '05'
)
ORDER BY rb_m ASC
)
UNION (

SELECT id, ua_name AS name, ua_surname AS surname, DATE_FORMAT( birthday, '%Y' ) AS rb_y, DATE_FORMAT( birthday, '%m' ) AS rb_m, DATE_FORMAT( birthday, '%d' ) AS rb_d, DATE_FORMAT( deadday, '%Y' ) AS rd_y, DATE_FORMAT( deadday, '%m' ) AS rd_m, DATE_FORMAT( deadday, '%d' ) AS rd_d
FROM users
WHERE TYPE =2
GROUP BY id
HAVING (
rd_m = '05'
)
ORDER BY rd_m ASC
) LIMIT 0 , 30
[/SQL]

Но всеравно выводит только одну запись:
4 Петр Петрович 2006 05 11 1967 05 10

Вот у него и дата смерти и рождения 05, должно было вывести две эти записи...
 

ccop

Новичок
Panchous, ну что бы месяц выделить, что бы сравнить rd_m = 2
 

vovik

Новичок
UNION ALL, а не UNION. В чем разница - можно прочитать в мане.

Ну и проще без группировки написать WHERE MONTH(birthday) = 5
 

ccop

Новичок
Panchous , #1054 - Unknown column 'rb_m' in 'where clause'

-~{}~ 23.06.06 17:41:

vovik, спасибо!
 
Сверху