Consulta

MySQL

29/04/2008

Como fazer uma única consulta com essas duas consultas. A diferença entre as duas sqls está em vermelho.
Alguém tem alguma sugestão?

SELECT mp.id,
mo.desc_modelo, m.desc_montadora, subgrupos.desc_subgrupo,
p.desc_descricao, [color=red:7e169fd375]f.desc_cod_fabricante as codigo [/color:7e169fd375]
FROM
peca_modelo pm,
modelos mo,
montadoras m,
modelo_pecas mp,
pecas p,
peca_subgrupos ps,
subgrupos,
[color=red:7e169fd375]fabricante_modelo_pecas fmp,
fabricantes f [/color:7e169fd375]
where
pm.modelo_pecas_id = mp.id
and pm.modelo_id = mo.id
and mo.montadora_id = m.id
AND ps.subgrupo_id = subgrupos.id
AND p.id = mp.peca_id
AND ps.peca_id = p.id
AND [color=red:7e169fd375]mp.id = fmp.modelo_peca_id and f.id = fmp.fabricante_id [/color:7e169fd375]

SELECT mp.id,
mo.desc_modelo, m.desc_montadora, subgrupos.desc_subgrupo,
p.desc_descricao, [color=red:7e169fd375]m.desc_cod_oem as codigo [/color:7e169fd375]
FROM
peca_modelo pm,
modelos mo,
montadoras m,
modelo_pecas mp,
pecas p,
peca_subgrupos ps,
subgrupos,
[color=red:7e169fd375]modelo_peca_montadoras mpm [/color:7e169fd375]
where
pm.modelo_pecas_id = mp.id
and pm.modelo_id = mo.id
and mo.montadora_id = m.id
AND ps.subgrupo_id = subgrupos.id
AND p.id = mp.peca_id
AND ps.peca_id = p.id
AND [color=red:7e169fd375]mp.id = mpm.modelo_peca_id and m.id = mpm.montadora[/color:7e169fd375]_id


Jaymebhmg

Jaymebhmg

Curtidas 0

Respostas

Codename.v

Codename.v

29/04/2008

Você pode criar um Stored Procedure que contenha os dois comandos SELECT que você listou acima e que receba um parametro que identifique atravez de um comando IF qual dos dois SELECT deve ser executado.

CREATE PROCEDURE SP_SELECT_EXEMPLO(IN tipo INT)
BEGIN
     IF tipo = 1 THEN
          SELECT
          mp.id, 
          mo.desc_modelo, m.desc_montadora, subgrupos.desc_subgrupo, 
          p.desc_descricao, f.desc_cod_fabricante as codigo 
          FROM 
          peca_modelo pm, 
          modelos mo, 
          montadoras m, 
          modelo_pecas mp, 
          pecas p, 
          peca_subgrupos ps, 
          subgrupos, 
          fabricante_modelo_pecas fmp, 
          fabricantes f 
          where 
          pm.modelo_pecas_id = mp.id 
          and pm.modelo_id = mo.id 
          and mo.montadora_id = m.id 
          AND ps.subgrupo_id = subgrupos.id 
          AND p.id = mp.peca_id 
          AND ps.peca_id = p.id 
          AND mp.id = fmp.modelo_peca_id and f.id = fmp.fabricante_id 
     ELSE
          SELECT
          mp.id, 
          mo.desc_modelo, m.desc_montadora, subgrupos.desc_subgrupo, 
          p.desc_descricao, m.desc_cod_oem as codigo 
          FROM 
          peca_modelo pm, 
          modelos mo, 
          montadoras m, 
          modelo_pecas mp, 
          pecas p, 
          peca_subgrupos ps, 
          subgrupos, 
          modelo_peca_montadoras mpm 
          where 
          pm.modelo_pecas_id = mp.id 
          and pm.modelo_id = mo.id 
          and mo.montadora_id = m.id 
          AND ps.subgrupo_id = subgrupos.id 
          AND p.id = mp.peca_id 
          AND ps.peca_id = p.id 
          AND mp.id = mpm.modelo_peca_id and m.id = mpm.montadora_id
     END IF;
END


Você vai continuar tendo os dois comandos SELECT mas agora eles estão reduzidos a uma unica Stored Procedure.


GOSTEI 0
POSTAR