AKB Forums

Go Back   AKB Forums > Technical sections > Languages, Compilers and Interpreters > Web Development
Home Register Blogs FAQ Members List Calendar Downloads Arcade Mark Forums Read

Web Development Java/PHP/Perl/ASP and more

Troubles when posting message? Click here! :: Проблемы с отправлением сообщения? Нажмите сюда!

Reply
 
LinkBack Thread Tools Display Modes
Old Sep 12, 2007, 21:01   #1
инсценирующий жизнь
 
[ Xelgen ]'s Avatar
 
Join Date: Jul 2002
Location: Fireplace of Ecotopia
Posts: 4,155
Rep Power: 6
Reputation: 45
Send a message via ICQ to [ Xelgen ] Send a message via Skype™ to [ Xelgen ]
[Help Needed] SQL Request. Getting each day of date period.

I have, a table containing events, and need to show them up in a calendar, for a month.

Here is the table I have.
Code:
1.
+------+--------------------+-------------------+------------+
|   id |         start_date |           end_date|      text  |
+------+--------------------+-------------------+------------+
|    1 | 2007-09-12 00:00:00|2007-09-12 23:59:59| Party      |
|    2 | 2007-09-13 00:00:00|2007-09-13 23:59:59| Concert    |
|    3 | 2007-09-13 00:00:00|2007-09-17 23:59:59| Festival   |
|    4 | 2007-09-15 00:00:00|2007-09-15 23:59:59| Exhibition |
|    5 | 2007-09-16 00:00:00|2007-09-16 23:59:59| Shooting   |
+------+--------------------+-------------------+------------+
I'd like to get, smth like.

Code:
2
+------+-----------+
|  day |    Text   |
+------+-----------+
|    12| Party     |
|    13| Concert   |
|    13| Festival  |
|    14| Festival  |
|    15| Festival  |
|    15| Exhibition|
|    16| Festival  |
|    16| Shooting  |
|    17| Festival  |
+------+-----------+
Do you have ideas, how this can be done?
Order, doesn't really matter, currently. So you can ignore, this as well as the time part of DATETIME.

Ideally, I need, to get, smth like :

Code:
 3
+------+--------------------------+
|  day |    Text                  |
+------+--------------------------+
|    12| Party                    |
|    13| Concert <br> Festival    |
|    14| Festival                 |
|    15| Festival <br> Exhibition |
|    16| Festival <br> Shooting   |
|    17| Festival                 |
+------+--------------------------+
But, I can do this with php, if i'd get the second table.

First table could also be done, through php, but I'd prefer to do it with MySQL, rather then processing "raw data" with PHP.
I'm sure this all can be done though MySQL, but i'm just out of ideas.
__________________
...ибо...
Rgrdz. [ Кселджэн ]
[ Xelgen ] is offline   Reply With Quote Quote selected
Old Sep 13, 2007, 12:21   #2
Главный Лысый
 
Pascal's Avatar
 
Join Date: Oct 2001
Location: AM
Posts: 2,829
Rep Power: 7
Reputation: 38
Send a message via ICQ to Pascal
Поиграйся с group by dayofmonth(start_date).
Что то типа select dayofmonth(start_date), text group by dayofmonth(start_date)

Если нужна добавка и месяца то
select month(start_date), dayofmonth(start_date), text group by month(start_date), dayofmonth(start_date)


Должно работать для мускула. Про другие движки не знаю.
__________________
Ruben Muradyan
Technical Director
PanARMENIAN Network: Armenian News

----------------------------------------------------
Лысина - это полянка, вытоптанная мыслями.
----------------------------------------------------
Pascal is offline   Reply With Quote Quote selected
Old Sep 13, 2007, 19:54   #3
инсценирующий жизнь
 
[ Xelgen ]'s Avatar
 
Join Date: Jul 2002
Location: Fireplace of Ecotopia
Posts: 4,155
Rep Power: 6
Reputation: 45
Send a message via ICQ to [ Xelgen ] Send a message via Skype™ to [ Xelgen ]
Сделал, это через пхп, так как дизайнеру, нужна была большая степень свободы в шаблоне, и там уже полюбому нужно было, лопатить массивы, так что делать это в двух местах глупо.

Но вопрос остается, тут загводка в том, как средствами ДБ из диапазона типа 2007-09-10 2007-09-15 получить, 6 строк, с датой каждого дня. тут как раз нужен какой-нибудь ungroup, а не group
Либо каким то еще макаром заставить выводить его, одну и ту же запись, несколько раз.
Остается еще изврат с созданием временной таблицы с перечнем всех дней месяца, но тут овчинка уже ни по одному критерию, не стоит выделки.
__________________
...ибо...
Rgrdz. [ Кселджэн ]
[ Xelgen ] is offline   Reply With Quote Quote selected
Old Sep 13, 2007, 22:38   #4
4294967296
 
Boyov's Avatar
 
Join Date: Mar 2002
Location: /proc/1
Posts: 378
Rep Power: 7
Reputation: 10
This should help I guess:

http://dev.mysql.com/doc/refman/5.0/en/regexp.html
__________________
Free your mind and your OS will follow
Boyov is offline   Reply With Quote Quote selected
Old Sep 14, 2007, 04:33   #5
Младенец
 
Join Date: Jun 2002
Location: Armenia, Yerevan
Posts: 28
Rep Power: 0
Reputation: 10
Send a message via ICQ to Edgar Maroukian
Lightbulb

Quote:
Originally Posted by [ Xelgen ] View Post
Сделал, это через пхп, так как дизайнеру, нужна была большая степень свободы в шаблоне, и там уже полюбому нужно было, лопатить массивы, так что делать это в двух местах глупо.

Но вопрос остается, тут загводка в том, как средствами ДБ из диапазона типа 2007-09-10 2007-09-15 получить, 6 строк, с датой каждого дня. тут как раз нужен какой-нибудь ungroup, а не group
Либо каким то еще макаром заставить выводить его, одну и ту же запись, несколько раз.
Остается еще изврат с созданием временной таблицы с перечнем всех дней месяца, но тут овчинка уже ни по одному критерию, не стоит выделки.
Ինչքան գիտեմ MySQL-ը նման խնդրի լուծման համար ստանդարտ մեթոդներ չունի.
Օրինակ MSSQL-ի մեջ ռեկուրսիվ կանչերով նման բան կարելի է սատանալ:
Համենայն դեպս MySQL-ի համար, ժամանակավոր table օգտագործելով կարելի է էդ խնդիրը լուծել, բայց թե որքանով է դա հարմար, կախված է քո պահանջներից:


Quote:
CREATE TABLE `t1` (
`id` int(11) NOT NULL auto_increment,
`d1` date NOT NULL,
`d2` date default NULL,
`event` varchar(20) default NULL,
PRIMARY KEY (`id`),
KEY `d1` (`d1`,`d2`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;


SET @v=0;
DROP TABLE IF EXISTS TMP;
CREATE TEMPORARY TABLE TMP(a int not null AUTO_INCREMENT,KEY(a));
INSERT INTO TMP VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0), (0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0 ),(0),(0),(0),(0),(0),(0),(0),(0);

SELECT a.d1, a.event, 0 FROM t1 AS a
UNION
SELECT ADDDATE(a.d1, @v+1), a.event, @v:=@v+1
FROM t1 AS a
LEFT JOIN TMP AS T ON a.d1<>T.a AND @v<(a.d2-a.d1)
WHERE a.d1<a.d2;

--DROP TABLE TMP;
Edgar Maroukian is offline   Reply With Quote Quote selected
Old Sep 17, 2007, 03:41   #6
Академик
 
Join Date: Jan 2002
Location: Shambala
Posts: 6,653
Rep Power: 8
Reputation: 151
Send a message via ICQ to Երեխա
Rekurskia chka MySQL um ed hastat, ORacle um ka, MS SQL um el, baycMySQL um chka u ed nshanakuma ed xndri lucman hamar miak tarberak zamanakavor axusyaki ogtagorcumna
__________________
Ախպեր դու էմիգրացիան տուրիզմի հետ մի խառնի...

http://moskull.livejournal.com/
Երեխա is offline   Reply With Quote Quote selected
Old Nov 12, 2007, 20:35   #7
наивная дурочка
 
TasteMyLipstick's Avatar
 
Join Date: Oct 2005
Location: бродяжка я
Posts: 197
Rep Power: 3
Reputation: 35
Send a message via ICQ to TasteMyLipstick
Lorem ipsum dolor sit amet.
__________________
Я поняла, любовь - страна, Где каждый человек - притворщик.
TasteMyLipstick is offline   Reply With Quote Quote selected
Old Jun 13, 2008, 11:36   #8
Registered User
 
Join Date: Jun 2008
Location: -
Posts: 3
Rep Power: 0
Reputation: 10
Если вам так принципиально нужно сделать это в код SQL, используете MySQL версии 5 и выше. Этот сервер поддерживает хранимые процедуры.
В них доступны if/then/else, case, while, repeat, loop, goto
Напишите процедуру и вызывайте её.

Впрочем это будет работать медленее чем PHP. Подумайте насчет написать функцию PHP которая будет слоем абстракции между SQL вызовом и остальым кодом PHP. (Т.е. она тянет из БД данные, обрабатывает и выдает нужный вам массив).
AlexNZ is offline   Reply With Quote Quote selected
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
New ebooks / Новые книги acid TWARM 141 May 5, 2008 23:11
SQL query for Access.MDB file doesn't work,F1 Xman Languages, Compilers and Interpreters 1 Oct 14, 2006 11:11
В Армении сыграли первую однополую свадьбу acid News 588 Jul 22, 2006 15:17
Help!Help!help! Awful Unix 56 Sep 21, 2005 12:32
mail lists management noch Web Development 4 Apr 14, 2003 17:10


All times are GMT. The time now is 06:49.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
This board was founded on September 29, 2001
Powered by Viper Internet

Affordable Web Hosting | ParevNet

Buy text link