none
inner join 3 tablas en un store procedure RRS feed

  • Pregunta

  • Estoy tratando de hacer una identificacion automatica de un producto con el uso de un store procedure algo asi como la matricula de un carro, pero no se como hacer uso del inner join dentro del store, necesito poder llegar al campo CL de la tabla estados para que tambien forme parte de la identificacion de mi tabla articulos Ej.BS101

    SELECT e.cl FROM articulos a INNER JOIN paquetesT p ON p.IDPaquete= a.paqueteid
     JOIN estadoT e ON e.IDEstado = p.estadoid


    create procedure sp_ArticulosGuardar (@paquete int, @tipo int)
    AS
    BEGIn
    
    declare @identificacion char(10)
    set @identificacion=concat(cast(@paquete as char(12)),cast(@tipo as char(1)))
    
    INSERT INTO articulos(paqueteid,tipo,identificacion)
    values(@paquete,@tipo,@identificacion)
    SELECT SCOPE_IDENTITY() AS articuloid;
    END 

    miércoles, 7 de febrero de 2018 19:22

Respuestas

  • bueno, pues con:

    Declare @cl char(2) = (Select cl from EstadoT where idEstado = (select estadoId from paquetesT where idPaquete = @paquete));

    y luego el mismo set que ya tenías

    Set @identificacion = ........+@cl

    ¿Es esto lo que buscabas?

    • Propuesto como respuesta Pablo RubioModerator miércoles, 7 de febrero de 2018 22:49
    • Marcado como respuesta AlexP5 jueves, 8 de febrero de 2018 15:46
    miércoles, 7 de febrero de 2018 20:17

Todas las respuestas

  • Hola:

    Pero por lo que entiendo, lo que quieres hacer es poner en la variable identificacion el id estado que le corresponde por el idPaquete que te llega como parametro.

    Declare @Mid int = (select idEstado from EstadoT where idEstado = (select estadoId from PaquetessT where idPaquete = @paquete));

    y con eso tienes el idEstado en una variable, que posteriormente concatenas en el set de @identificacion.

    ¿Es eso?

    Saludos


    miércoles, 7 de febrero de 2018 19:35
  • Compañero en la variable identificacion quiero poner el cl que son dos letras que identifican a cada estado que esta  en la tabla estado 
    miércoles, 7 de febrero de 2018 19:42
  • bueno, pues con:

    Declare @cl char(2) = (Select cl from EstadoT where idEstado = (select estadoId from paquetesT where idPaquete = @paquete));

    y luego el mismo set que ya tenías

    Set @identificacion = ........+@cl

    ¿Es esto lo que buscabas?

    • Propuesto como respuesta Pablo RubioModerator miércoles, 7 de febrero de 2018 22:49
    • Marcado como respuesta AlexP5 jueves, 8 de febrero de 2018 15:46
    miércoles, 7 de febrero de 2018 20:17
  • Se me habia olvidado comentar si gracias compañero era eso lo que buscaba al final asi quedo 

    Declare @Mid char(2) 
    set @Mid= (select cl from EstadoT where idEstado = (select estadoId from PaquetesT where idPaquete = @paquete));
    
    declare @identificacion char(10)
    set @identificacion=concat(cast(@paquete as char(3)),cast(@tipo as char(1)),cast(@Mid as char(2)))

    jueves, 8 de febrero de 2018 15:46