Skip to main content

MySQL Query for getting nested items in a single query

 MySQL Query for getting nested items in a single query

 Here I would try to explain this with an example of categories , subcategories and maincategories which is handled via a nested structure in the table

How to get subcategory name , category name  and main category name in a single MySQL query

Suppose your category structure is like

MAIN CATEGORY >> CATEGORY  >> SUBCATEGORY

and You have a category table structure like this:

Table Name: tbl_category
CatId integer Autoincrement primary
CatName Varchar(25)
CatParent integer
CatSubParent integer
CatActive  integer


Suppose You have a category table with values like this

Understanding the nested table structure for storing categories , subcategories and maincategories in a single table

catId , catName , catParent , CatSubParent
1 , Books , 0 , 0
2 , DVD , 0 , 0
3 , Science , 1 , 0
4 , Maths , 1 , 0
5 , Movies , 2 , 0
6 , Music , 2 , 0
7 , English Movies , 2 , 5
8 , Malayalam Movies , 2 , 5
9 , Algebra , 1 , 4
10 , Physical Science , 1 , 3

Based on above table structure main category, category and subcategory values are identified by the presence of values in "catParent" and "CatSubParent" fields.

if catParent is 0 and CatSubParent is 0, then it is a Main category
if catParent is greater than 0 and CatSubParent is 0, then it is a  category
and if both catParent and CatSubParent field values are greater than 0 , then it is a sub category

So we are here is know how we can get subcategory name , category name and main category name  in a single row with out using multiple query

Try this query

SELECT sc.catId AS catid, sc.catName AS subcat, c.catName AS cat, m.catName AS maincat
FROM tbl_category sc
LEFT JOIN tbl_category m ON m.catId = sc.catParent
LEFT JOIN tbl_category c ON c.catId = sc.catParentSub
WHERE (
sc.catParent IS NOT NULL
AND sc.catParentSub IS NOT NULL
AND sc.catParent <> ''
AND sc.catParentSub <> ''
)



this query will generate result like this

catid | subcat | cat | maincat
------------------------------
10 | Physical Science | Science | Books
9 | Algebra | Maths | Books
7 | English Movies |  Movies | DVD
8 | Malayalam Movies |  Movies | DVD

if you want to order the query based on Main category name , Category name and then subcategory name, then try the below qry:



SELECT sc.catId AS catid, sc.catName AS subcat, c.catName AS cat, m.catName AS maincat
FROM tbl_category sc
LEFT JOIN tbl_category m ON m.catId = sc.catParent
LEFT JOIN tbl_category c ON c.catId = sc.catParentSub
WHERE (
sc.catParent IS NOT NULL
AND sc.catParentSub IS NOT NULL
AND sc.catParent <> ''
AND sc.catParentSub <> ''
)
ORDER BY m.catName, c.catName, sc.catName





Hope this would help someone :)

Related Articles:
MySQL Query for getting subcategory name and parent category name in a single row

Popular posts from this blog

Sachin Tendulkar's emotional farewell Speech at Wankhede Stadium, Mumbai - Full Text and Video

Full Text and Video of Sachin Tendulkar's emotional farewell Speech on Nov 16, 2014 On November 16, 2013 - Sachin Ramesh Tendulkar played his last international cricket match against West-Indies at the at Wankhede Stadium, Mumbai. After the match he gave an emotional farewell speech. No one would be able forget the speech. The eyes of the gathered people were tearfull. Through out the speech Sachin thanked each and everyone who supported and encouraged him to build up his glorius career which spanned 24 years.

How to remove backlinks to your website from low quality websites and how to Disavow websites?

Some webmasters may find their website's traffic dropped significantly after a particular day. The day before the traffic drop, might have received lots of visitors, but after that the web traffic dropped to less than 50%. Periodically Google releases some search algorithms which tracks low quality sites and penalise pages so that they may not appear in top positions of the search results there after and this will lead to low traffic to that website.

PHP script to list files in a given directory using opendir, readdir and glob functions

PHP script to list files in a given directory The below given script goes through a given directory and list the name of the files in the order as it is stored in the file system. The first script uses a directory handler to operate on a given directory. It opens the handler, reads file entries one by one by looping through the directory (during this step you can process the file ) and finally close the handler


Urgent Openings for PHP trainees, Andriod / IOS developers and PHP developers in Kochi Trivandrum Calicut and Bangalore. Please Send Your updated resumes to recruit.vo@gmail.com   Read more »
Member
Search This Blog