Omar Salim
Omar Salim

Reputation: 55

MySQL Stored Procedure with Multiple Select statements From Different Tables

I'm trying to do multiple selects from different tables in a mysql stored procedure as follows

DELIMITER //  
CREATE PROCEDURE `NovemberSummary`(IN `branch` VARCHAR(60), IN `year` INT) NOT 
DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER 
BEGIN
select sum(sales.amount) as Sales from sales where month (sales.date)= 11 and 
sales.branch = branch;
select sum(expenses.amount) as Expenses from expenses where month(expenses.date)= 11
and expenses.branch = branch;
END

But It returns only The first Select, as In result set only contains Sales Column.

MySQL Version is 5.6.11 - MySQL Community Server

Upvotes: 3

Views: 42472

Answers (5)

Sonu Chohan
Sonu Chohan

Reputation: 283

BEGIN
DELETE FROM ut_axis_balance WHERE oth_refer = 'CLGBAL';
UPDATE ut_axis_karvy SET mfund_code = '200' where mfund_code IN ( SELECT mfund_code FROM ut_axis_karvy WHERE mfund_code = '039' );
UPDATE ut_axis_karvy SET mfund_code = '160' where mfund_code IN ( SELECT mfund_code FROM ut_axis_karvy WHERE mfund_code = '106' );
UPDATE ut_axis_karvy SET mfund_code = '128' where mfund_code IN ( SELECT mfund_code FROM ut_axis_karvy WHERE mfund_code = '107' );
UPDATE ut_axis_karvy SET mfund_code = '171' where mfund_code IN ( SELECT mfund_code FROM ut_axis_karvy WHERE mfund_code = '123' );
UPDATE ut_axis_karvy SET mfund_code = '193' where mfund_code IN ( SELECT mfund_code FROM ut_axis_karvy WHERE mfund_code = '119' );
UPDATE ut_axis_karvy SET mfund_code = '193' where mfund_code IN ( SELECT mfund_code FROM ut_axis_karvy WHERE mfund_code = '121' );
UPDATE ut_axis_karvy SET mfund_code = '193' where mfund_code IN ( SELECT mfund_code FROM ut_axis_karvy WHERE mfund_code = '202' );
UPDATE ut_axis_karvy SET mfund_code = '161' where mfund_code IN ( SELECT mfund_code FROM ut_axis_karvy WHERE mfund_code = '120' );
UPDATE ut_axis_karvy SET mfund_code = '160' where mfund_code IN ( SELECT mfund_code FROM ut_axis_karvy WHERE mfund_code = '166' );
UPDATE ut_axis_karvy SET mfund_code = '160' where mfund_code IN ( SELECT mfund_code FROM ut_axis_karvy WHERE mfund_code = '167' );
UPDATE ut_axis_karvy SET mfund_code = '160' where mfund_code IN ( SELECT mfund_code FROM ut_axis_karvy WHERE mfund_code = '175' );
UPDATE ut_axis_karvy SET mfund_code = '042' where mfund_code IN ( SELECT mfund_code FROM ut_axis_karvy WHERE mfund_code = '200' );
UPDATE ut_axis_karvy SET mfund_code = '193' where mfund_code IN ( SELECT mfund_code FROM ut_axis_karvy WHERE mfund_code = '202' );
UPDATE ut_axis_karvy SET mfund_code = '161' where mfund_code IN ( SELECT mfund_code FROM ut_axis_karvy WHERE mfund_code = '266' );
UPDATE ut_axis_karvy SET mfund_code = '193' where mfund_code IN ( SELECT mfund_code FROM ut_axis_karvy WHERE mfund_code = '495' );
UPDATE ut_axis_karvy SET mfund_code = '177' where mfund_code IN ( SELECT mfund_code FROM ut_axis_karvy WHERE mfund_code = '003' );
UPDATE ut_axis_karvy SET mfund_code = '177' where mfund_code IN ( SELECT mfund_code FROM ut_axis_karvy WHERE mfund_code = '132' );
UPDATE ut_axis_karvy SET mfund_code = '177' where mfund_code IN ( SELECT mfund_code FROM ut_axis_karvy WHERE mfund_code = '144' );
END

Upvotes: 0

Engr. Khuram  Shahzad
Engr. Khuram Shahzad

Reputation: 470

Using Multiple Select Statement in Stored Procedures

Try with the below query.

    select distinct ProdSubCategory, NULL,NULL
from Table1
inner join Table2 on ID_FK= ID_PK
where Table2.Type=@chvType and Table1.ProdCategory=@chvProdSubCategory

UNION ALL

select NULL, Brand,NULL
from Table1
inner join Table2 on ID_FK= ID_PK
where Table2.Type=@chvType and Table1.ProdCategory=@chvProdSubCategory

UNION ALL
select NULL, Price,NULL
from Table1
inner join Table2 on ID_FK= ID_PK
where Table2.Type=@chvType and Table1.ProdCategory=@chvProdSubCategor

Upvotes: 0

Shaan Ansari
Shaan Ansari

Reputation: 550

Try This

CREATE PROCEDURE `NovemberSummary`(IN `branch` VARCHAR(60), IN `year` INT) NOT 

DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER 

BEGIN

DECLARE SalesAmount VARCHAR(255) DEFAULT 0;
DECLARE ExpensesAmount VARCHAR(255) DEFAULT 0;

SELECT SUM(sales.amount) AS Sales INTO SalesAmount FROM sales WHERE MONTH (sales.date)= 11 AND 

sales.branch = branch;

SELECT SUM(expenses.amount) AS Expenses INTO ExpensesAmount FROM expenses WHERE MONTH(expenses.date)= 11

AND expenses.branch = branch;

SELECT SalesAmount AS Sales, ExpensesAmount AS Expenses;

END

Upvotes: 0

Bembo
Bembo

Reputation: 1939

CREATE PROCEDURE get_data ()
BEGIN
  SELECT Code, Name, Population, Continent FROM Country
    WHERE Continent = 'Oceania' AND Population < 10000;
  SELECT Code, Name, Population, Continent FROM Country
    WHERE Continent = 'Europe' AND Population < 10000;
  SELECT Code, Name, Population, Continent FROM Country
    WHERE Continent = 'North America' AND Population < 10000;
END;

Upvotes: 2

krokodilko
krokodilko

Reputation: 36127

Try this approach:

DELIMITER //  
CREATE PROCEDURE `NovemberSummary`(IN `branch` VARCHAR(60), IN `year` INT) NOT 
DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER 
BEGIN
SELECT 
   ( select sum(sales.amount) from sales 
     where month (sales.date)= 11 and sales.branch = branch ) as Sales ,
   ( select sum(expenses.amount) from expenses 
     where month(expenses.date)= 11 and expenses.branch = branch ) as Expenses 
   ;
END

this procedure returns only one resultset that contains two columns: Sales + Expenses:

+-------+----------+
| Sales | Expenses |
+-------+----------+
|    20 |       15 |
+-------+----------+

, instead of two resultsets with only one column.

+-------+
| Sales |
+-------+
|    20 |
+-------+

+----------+
| Expenses |
+----------+
|       15 |
+----------+

Upvotes: 7

Related Questions