Alejandro
Alejandro

Reputation: 421

How i return only one recordset from multiple select of a stored procedure in MySQL?

This is my SProcedure

DELIMITER $$

DROP PROCEDURE IF EXISTS `etracking`.`validarAcceso` $$
CREATE PROCEDURE `etracking`.`validarAcceso` (IN pusuario VARCHAR(30),IN ppassword VARCHAR(10))
BEGIN

  DECLARE encontrado INT;
  SET encontrado = 0;
IF encontrado = 0 THEN
  SELECT usuarios_distribuidores.nombre, usuarios_distribuidores.apellido1,
  usuarios_distribuidores.apellido2, distribuidores.nombre, count(encontrado) FROM
  usuarios_distribuidores INNER JOIN distribuidores ON
  distribuidores.iddistribuidor =  usuarios_distribuidores.iddistribuidor
  WHERE email = pusuario AND password = ppassword;
END IF;

IF encontrado = 0 THEN
   SELECT * FROM usuarios_centro_acopio WHERE email = pusuario AND password = ppassword;

END IF;

IF encontrado = 0 THEN
  SELECT * FROM usuarios_admin WHERE email = pusuario AND password = ppassword;
END IF;

END $$

DELIMITER ;

Upvotes: 0

Views: 1654

Answers (2)

Guffa
Guffa

Reputation: 700422

Put the queries in the same condition, so that you can use union all:

IF encontrado = 0 THEN

  SELECT usuarios_distribuidores.nombre, usuarios_distribuidores.apellido1,
  usuarios_distribuidores.apellido2, distribuidores.nombre, count(encontrado) FROM
  usuarios_distribuidores INNER JOIN distribuidores ON
  distribuidores.iddistribuidor =  usuarios_distribuidores.iddistribuidor
  WHERE email = pusuario AND password = ppassword;

  UNION ALL

  SELECT * FROM usuarios_centro_acopio WHERE email = pusuario AND password = ppassword;

  UNION ALL

  SELECT * FROM usuarios_admin WHERE email = pusuario AND password = ppassword;

END IF;

Upvotes: 1

Horcrux7
Horcrux7

Reputation: 24447

There are 2 options. You can use a union or a join. It depends on your structure.

 SELECT * FROM usuarios_centro_acopio WHERE email = pusuario AND password = ppassword
 UNION ALL
 SELECT * FROM usuarios_admin WHERE email = pusuario AND password = ppassword;

or

 SELECT * FROM usuarios_centro_acopio c, usuarios_admin a WHERE c.email = a.email and cpassword = a.password and email = pusuario AND password = ppassword

Upvotes: 0

Related Questions