Solved

nesting select statements in MYSQL stored procedure

Posted on 2009-07-01
2
550 Views
Last Modified: 2012-06-27
I am trying to create a stored procedure that uses the output of one select statement as the input for another. I need to nest these 3 or 4 levels deep, but I cant find anything about this in the manuals.

For example, I want to select a country, then find all the regions within that country then the cities within each region.

I have some specific code to execute at each level to create index pages, so I want to be able to do this as nested loops of some type (foreach, 'while not eof'?) if possible.

The reason that I do not want to use joins here is that i will be creating output to different files at each level.
I will be creating a 'country page' that will link to each city region page and a region page for each country that will link to all the cities within the region.

I need to grab each of the values to create the various strings for each of the outfiles.

I am creating HTML pages. I have created views that output the proper html code, and it works one page at a time. What I am trying to do is create the procedure to update these pages once a month.

(originally posted in wrong category)
Roughly:
Begin;
#get country
SELECT cc1.Fips_10_4 as cntry FROM cc1;
 
#for each country get region codes
SELECT  rgn FROM camwme.rgn_center where Fips_10_4 =cntry;
 
#get cities
SELECT city from masterlist where region=rng and Fips_10_4 =cntry;
END;

Open in new window

0
Comment
Question by:CameraWithMe
  • 2
2 Comments
 
LVL 2

Assisted Solution

by:wcoka2
wcoka2 earned 500 total points
ID: 24760684
To use a value of one select you can store the output in a variable

declare var1 integer;

#get country
SELECT cc1.Fips_10_4 into var1 FROM cc1;
0
 
LVL 2

Accepted Solution

by:
wcoka2 earned 500 total points
ID: 24760707
for the loop you could do something like this:

declare tempcntry integer;
 
declare cur1 cursor for
SELECT cc1.Fips_10_4 as cntry FROM cc1;
 
declare continue handler for not found set done=1;
 
open cur1;
  loop1:loop
 
      fetch cur1 into tempcntry ;
 
        if done=1 then
          leave loop1;
       end if;
 
    BEGIN
      DECLARE not_found INT DEFAULT 0;
      DECLARE CONTINUE HANDLER FOR 1339 SET not_found=1;
 
#for each country get region codes
SELECT  rgn FROM camwme.rgn_center where Fips_10_4 =tempcntry;
 
 
    END;
 
  end loop loop1;
close cur1;

Open in new window

0

Featured Post

Windows Server 2016: All you need to know

Learn about Hyper-V features that increase functionality and usability of Microsoft Windows Server 2016. Also, throughout this eBook, you’ll find some basic PowerShell examples that will help you leverage the scripts in your environments!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Foreword In the years since this article was written, numerous hacking attacks have targeted password-protected web sites.  The storage of client passwords has become a subject of much discussion, some of it useful and some of it misguided.  Of cou…
More Fun with XML and MySQL – Parsing Delimited String with a Single SQL Statement Are you ready for another of my SQL tidbits?  Hopefully so, as in this adventure, I will be covering a topic that comes up a lot which is parsing a comma (or other…
In a recent question (https://www.experts-exchange.com/questions/28997919/Pagination-in-Adobe-Acrobat.html) here at Experts Exchange, a member asked how to add page numbers to a PDF file using Adobe Acrobat XI Pro. This short video Micro Tutorial sh…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

778 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question