[prev in list] [next in list] [prev in thread] [next in thread] 

List:       php-db
Subject:    [PHP-DB] GROUP BY
From:       "Ron Piggott" <ron.piggott () actsministries ! org>
Date:       2011-05-11 3:30:26
Message-ID: 33ECF067503644B3877931276C02F5B0 () RonPiggottPC
[Download RAW message or body]


Is there a way in the query below that the "LEFT OUTER JOIN" connects with only the \
most recently added entry in `verse_of_the_day_Bible_trivia` for each category ( \
`verse_of_the_day_Bible_trivia`.`Bible_trivia_category_reference` ) based on the \
column `verse_of_the_day_Bible_trivia`.`date_added` ?

The purpose of this query is to compare the most recently added Bible trivia \
questions ( `verse_of_the_day_Bible_trivia`.`date_added` )  from each category ( \
`Bible_trivia_category`.`reference` ) with the last time the category handout was \
created ( `verse_of_the_day_bible_trivia_ready_made_handouts`.`created` ).  If there \
are new questions since the last time the handout was created ( \
`verse_of_the_day_Bible_trivia`.`date_added` ) OR the category now has 10 or more \
questions then the handout will be re-created (through a cron job) based on the \
results of this query.  The HAVING condition is to eliminate categories with less \
than 10 questions.

- See table structures below

Thank you for your help.

Ron

===

SELECT `verse_of_the_day_Bible_trivia`.`Bible_trivia_category_reference` , \
`verse_of_the_day_Bible_trivia`.`date_added` , COUNT( \
`verse_of_the_day_Bible_trivia`.`reference` ) AS question_count, \
`verse_of_the_day_bible_trivia_ready_made_handouts`.`filename`

FROM ( `verse_of_the_day_Bible_trivia` INNER JOIN `Bible_trivia_category` ON \
`Bible_trivia_category`.`reference` = \
`verse_of_the_day_Bible_trivia`.`Bible_trivia_category_reference` )

LEFT OUTER JOIN `verse_of_the_day_bible_trivia_ready_made_handouts` ON \
`Bible_trivia_category`.`reference` = \
`verse_of_the_day_bible_trivia_ready_made_handouts`.`Bible_trivia_category_reference` \


WHERE `verse_of_the_day_Bible_trivia`.`live` = 1 AND \
`verse_of_the_day_Bible_trivia`.`date_added` > \
`verse_of_the_day_bible_trivia_ready_made_handouts`.`created`

GROUP BY `Bible_trivia_category`.`reference`

HAVING question_count >=10

ORDER BY `verse_of_the_day_Bible_trivia`.`reference` ASC

===


`Bible_trivia_category`

CREATE TABLE IF NOT EXISTS `Bible_trivia_category` (
  `reference` int(3) NOT NULL AUTO_INCREMENT,
  `category` varchar(45) NOT NULL,
  PRIMARY KEY (`reference`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=35 ;


`verse_of_the_day_Bible_trivia`

CREATE TABLE IF NOT EXISTS `verse_of_the_day_Bible_trivia` (
  `reference` int(5) NOT NULL AUTO_INCREMENT,
  `Bible_trivia_category_reference` int(3) NOT NULL DEFAULT '0',
  `trivia_question` varchar(300) NOT NULL,
  `trivia_answer_1` varchar(150) NOT NULL,
  `trivia_answer_2` varchar(150) NOT NULL,
  `trivia_answer_3` varchar(150) DEFAULT NULL,
  `trivia_answer_4` varchar(150) DEFAULT NULL,
  `answer` int(1) NOT NULL DEFAULT '0',
  `explanation` varchar(1000) DEFAULT NULL,
  `Bible_verse_reference` varchar(60) DEFAULT NULL,
  `seasonal_use` int(1) NOT NULL DEFAULT '0',
  `date_added` datetime NOT NULL,
  `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `assigned_date` date NOT NULL DEFAULT '0000-00-00',
  `store_catalog_reference` int(3) NOT NULL DEFAULT '0',
  `teaching_devotional_messages_reference` int(3) NOT NULL DEFAULT '0',
  `live` int(1) NOT NULL DEFAULT '0',
  `user_hits` int(25) NOT NULL DEFAULT '0',
  `user_hits_answer` int(25) NOT NULL DEFAULT '0',
  PRIMARY KEY (`reference`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=410 ;


`verse_of_the_day_bible_trivia_ready_made_handouts`

CREATE TABLE IF NOT EXISTS `verse_of_the_day_bible_trivia_ready_made_handouts` (
  `reference` int(5) NOT NULL AUTO_INCREMENT,
  `Bible_trivia_category_reference` int(3) NOT NULL,
  `filename` varchar(100) NOT NULL,
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `live` int(1) NOT NULL,
  `views` int(25) NOT NULL,
  PRIMARY KEY (`reference`),
  UNIQUE KEY `verse_of_the_day_Bible_trivia_reference` \
(`Bible_trivia_category_reference`) ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 \
AUTO_INCREMENT=15 ;


The Verse of the Day
"Encouragement from God's Word"
http://www.TheVerseOfTheDay.info  



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic