Skip to main content

Mysql queries (complex)

Scenario-1: Using the count or sum with inner join query

Table structures:

videos: id, title, description, date_uploaded

categories: id, category_name

votes: id, videoid, vote, date (vote will range between 1 and 5)

Query:
SELECT v.id as vid, v.title, v.description, v.date_uploaded, c.category_name, v2.total, v2.count FROM videos v inner join
categories c inner join (select videoid, sum(vote) as total, count(*) as count from votes group by videoid) v2 on v.category_id=c.id and v2.videoid=v.id and v.featured=1 and v.published=1 order by v.date_uploaded desc;

Resultset:

vid  title  description    date_uploaded            id    category_name   total  count
12   Ford   inauguration 2011-10-07 01:08:22    3    Inauguration        97     31
9     Nano   new car        2011-11-02 03:15:25    2    Automobile        120    38  

From the above result set, we can get the percentage of votes for videos as: (total / count) * 20
Note: The above query assumes that you have a record in votes table for each video id in videos table.

Scenario-2: Get the count of videos for each category

Table structures:

videos: id, title, category_id

categories: id, category_name

Query:
SELECT c.id, c.category_name, v.total FROM categories c inner join (select category_id, count(*) as total from videos where published=1 group by category_id) v on c.id=v.category_id group by c.id order by c.category_name;

Result: We can get the total number of videos for each category

Comments

Popular posts from this blog

Joomla validate chrono forms using jquery

It is a common practice to use Chrono forms in our joomla site to setup various forms in the site, be it a contact us form, submit a ticket form, or whatever. I have set the option "validate form" to "No" under chronoform settings in admin panel, and also preferred to not include any js or css files. For validating the chrono forms, i prefer jquery. So first lets add jquery support in our joomla. It is quite simple: 1. Download jquery.js and jquery_min.js (1.4.2 version is enough) and place them in media/system/js folder of your joomla. 2. Edit libraries->joomla->html->html->behavior.php, and add the following function below the mootools() function: function jQuery($debug = null)     {         static $loaded;         global $mainframe;         // Only load once         if ($loaded) {    ...

htaccess disable directory browsing, disable file listing, disable file access

There may be some personal or secure data in a file, that you want to hide from the end user, when it is viewed through a web browser. Ex: http://www.example.com/user_files/24/chat.txt In the above scenario, if the file "chat.txt" contains a secure data, and you dont want to allow end users to directly access the file, or to disable the file listing in the folder "user_files" or "24", use the below code in your .htaccess file inside "user_files" folder: Options -Indexes order allow,deny deny from all

Differences between php4 and php5

These are some of the differences i know between php4 and php5: 1. PHP5 supports more oops concepts like access specifiers and inheritance 2. we can pass objects by reference in php5 (using clone keyword) 3. Exception class included in PHP5 (try and catch) 4. More XML related functions like SimpleXML were included in PHP5 for easy  processing of XML data 5. PHP4 uses Zend engine 1.0 as a parser.PHP5 uses Zend engine 2.0 6. php 5 has improvements in design, security and stablity 7. Magic methods have been included in php5 8. Unified Constructors and Destructors in php5 9. There is a new error level defined as E_STRICT in php5  (notifies deprecated code) 10. Final keyword in php5 indicates that a method cannot be overridden by a  child Note: It is said that PHP5 has Backward compatibility issues with php4.