Jump to content


Photo

Problema Com Order By


  • Faça o login para participar
6 replies to this topic

#1 Takahata

Takahata

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 19/12/2010, 00:16

Olá pessoal.

Estou fazendo uma consulta com JOIN em três tabelas, segue a query:

SELECT pedido_item.cod_empresa AS cod_empresa,
pedido_item.cod_pedido AS cod_pedido,
pedido_item.cod_produto, desc_comercial,
qtd_pedida,
qtd_recebida,
pedido.dt_envio AS data,
obs_item
FROM pedido AS pedido

JOIN pedido_item AS pedido_item
ON pedido.cod_pedido = pedido_item.cod_pedido

JOIN produto AS produto
ON pedido_item.cod_produto = produto.cod_produto

WHERE desc_comercial LIKE '%algo%';


Quando eu rodo a query dessa forma eu consigo os resultados tranquilamente, o problema é que quando eu tento colocar algum ORDER BY no final do código, por exemplo "ORDER BY cod_pedido DESC", o banco demora um bom tempo e não retorna valor algum.

Alguem sabe qual o provável motivo para isso, o tamanho das tabelas (a tabela de produtos tem umas 20 mil linhas, as demais tem menos de 6 mil) poderia provocar esse tipo de comportamento?

Edição feita por: Takahata, 19/12/2010, 00:18.


#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 19/12/2010, 09:39

cod_pedido é um campo que aparece em mais de uma tabela. Especifique o nome de uma delas. Ex:

ORDER BY pedido.cod_pedido DESC


#3 Takahata

Takahata

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 19/12/2010, 14:36

eu ja tentei fazer isso, não resolveu.

#4 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 19/12/2010, 19:05

Mostra as estruturas das tabelas.

#5 Takahata

Takahata

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 20/12/2010, 13:57

Desculpa a ignorancia mas, qdo vc diz "a estrutura", quer dizer somente o nome de todas as colunas ou alguma outra informação?

E, somente por curiosidade, no que isso poderia influir, já que o select funciona, mas quando eu coloco um ORDER BY qualquer, por exemplo:

SELECT pedido_item.cod_empresa AS cod_empresa,
pedido_item.cod_pedido AS cod_pedido,
pedido_item.cod_produto,
desc_comercial,
qtd_pedida,
qtd_recebida,
pedido.dt_envio AS data,
obs_item

FROM cc_pedido AS pedido

JOIN cc_pedido_item AS pedido_item
ON pedido.cod_pedido = pedido_item.cod_pedido

JOIN cd_produto AS produto
ON pedido_item.cod_produto = produto.cod_produto

WHERE obs_item LIKE '%alguma coisa%'
ORDER BY dt_envio DESC;


o database nao responde!

#6 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 20/12/2010, 18:49

Nome e tipo de dados das colunas, como aqui:

http://forum.wmonlin...ost__p__1006300

#7 Takahata

Takahata

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 20/12/2010, 21:15

Produtos

CREATE TABLE `cd_produto` (
`cod_produto` varchar(30) NOT NULL default '',
`cod_linha` int(11) default NULL,
`cod_roteiro` int(11) default NULL,
`tipo_norma` int(11) default NULL,
`cod_configurador` int(11) default NULL,
`tp_rosca` varchar(10) default NULL,
`cod_colaborador` int(11) NOT NULL default '0',
`cod_familia_comercial` int(11) default NULL,
`moeda` varchar(5) default 'R$',
`bitola` varchar(10) default NULL,
`cod_fornecedor` int(11) default NULL,
`norma_acabamento` varchar(10) default NULL,
`acabamento` varchar(10) default NULL,
`cod_ean` varchar(100) default NULL,
`fpp_passo` varchar(10) default NULL,
`localizacao` varchar(15) NOT NULL default '',
`class_fiscal` varchar(18) default NULL,
`ind_servico` binary(1) default '0',
`un` varchar(4) default NULL,
`desc_comercial` varchar(255) default NULL,
`desc_tecnica` text,
`cod_empresa` int(11) NOT NULL default '1',
`desc_pda` varchar(50) default NULL,
`desc_nota_fiscal` varchar(255) default NULL,
`situacao` int(11) NOT NULL default '1',
`peso_bruto` double(16,4) default NULL,
`ind_estoque` binary(1) default '1',
`peso_liquido` double(16,4) default NULL,
`tp_aquisicao` int(11) default '1',
`ind_faturado` binary(1) default NULL,
`lote_economico` double(16,4) default NULL,
`dt_implant` datetime default NULL,
`dt_alteracao` datetime default NULL,
`cod_colaborador_alteracao` int(11) default NULL,
`cod_tributacao_iss` char(1) default NULL,
`cod_tributacao_ipi` char(1) default NULL,
`aliquota_ipi` double(8,7) NOT NULL default '0.0000000',
`aliquota_iss` double(16,4) default NULL,
`ind_estrut_mercado` binary(1) default NULL,
`ind_ecommerce` binary(1) default NULL,
`ct` char(2) default '00',
`ind_ipi_diferenciado` binary(1) default '0',
`ind_icms_diferenciado` binary(1) default NULL,
`tempo_fabricacao` time default NULL,
`vl_custo_total` double(16,4) default NULL,
`moeda_compra` varchar(5) default 'R$',
`vl_custo_fob` double(16,4) default NULL,
`cod_produto_fornec` varchar(30) NOT NULL default '',
`vl_custo_cif` double(16,4) default NULL,
`perc_margem_lucro` double(7,6) default NULL,
`ind_revenda` binary(1) default '0',
`tp_calculo_ipi` int(11) default '0',
`configurador_op` text,
`cod_norma` int(11) default NULL,
`comprimento` double(16,4) default '0.0000',
`altura` double(16,4) default '0.0000',
`largura` double(16,4) default '0.0000',
`un_cq` varchar(10) default NULL,
`id_sequencia_etiqueta` int(11) default NULL,
`seq_nr_serie` int(11) default NULL,
`sigla_nr_serie` varchar(10) default NULL,
`digitos_nr_serie` int(11) default NULL,
`ind_materia_prima` binary(1) default '0',
`cod_cliente` int(11) default NULL,
`desc_comercial_fornec` varchar(255) default NULL,
`ind_fantasma` binary(1) default '0',
`fator_internacao` float(16,4) default NULL,
`cod_produto_sintegra` int(11) default NULL,
`tp_impressao` int(11) default '1',
`dt_ultima_contagem` datetime default NULL,
`dt_ultima_atualizacao` datetime default NULL,
`tp_inventario` int(11) default '0',
`dt_vl_custo_total` datetime default NULL,
`dias_garantia_produto` int(11) default '0',
`dias_garantia_os` int(11) default '0',
`ind_bonificacao` binary(1) default '0',
`ind_credita_bonus` binary(1) default '0',
`ind_politica_preco` binary(1) default '0',
`vl_custo_medio` double(16,4) default NULL,
`ind_reserva_pedido` binary(1) default '0',
`qtd_max` double(16,4) default '0.0000',
`termo_garantia` text,
`qtd_multipla` double(16,4) default '0.0000',
`cod_cor` int(11) default NULL,
`dias_validade` int(11) default NULL,
`tp_cod_barra` int(11) default NULL,
`modelo` text,
`classificacao` char(1) default NULL,
`ind_possui_grade` binary(1) default NULL,
`cod_caracteristica_linha` int(11) default NULL,
`cod_caracteristica_coluna` int(11) default NULL,
`referencia` varchar(100) default NULL,
`aliquota_icms_st` double(7,6) default NULL,
`cod_termo_garantia` int(11) default NULL,
`cod_produto_rps` varchar(30) default NULL,
`cod_servico_federal` varchar(5) default NULL,
`ind_qtd_fracionada` binary(1) NOT NULL,
`cod_template_etiqueta` int(11) default NULL,
`qtd_por_embalagem` double(16,4) default '1.0000',
`cod_marca` int(11) default NULL,
`observacao` text,
`tempo_devolucao_locacao` int(11) default NULL,
`vl_custo_locacao` double(16,4) default NULL,
PRIMARY KEY (`cod_produto`),
KEY `cod_roteiro` (`cod_roteiro`),
KEY `cod_norma` (`cod_norma`),
KEY `cod_configurador` (`cod_configurador`),
KEY `cod_familia_comercial` (`cod_familia_comercial`),
KEY `moeda` (`moeda`),
KEY `cod_fornecedor` (`cod_fornecedor`),
KEY `cod_colaborador` (`cod_colaborador`),
KEY `cod_empresa` (`cod_empresa`,`cod_linha`),
KEY `class_fiscal` (`class_fiscal`),
KEY `cod_empresa_2` (`cod_empresa`),
KEY `un` (`un`),
KEY `i_ean` (`cod_ean`),
KEY `i_situacao` (`situacao`),
KEY `cod_cliente` (`cod_cliente`),
KEY `i_planejamento` (`tp_aquisicao`,`ind_estoque`,`situacao`),
KEY `i_desc_comercial` (`desc_comercial`,`situacao`,`ind_faturado`),
KEY `cod_cor` (`cod_cor`),
KEY `cod_termo_garantia` (`cod_termo_garantia`),
KEY `cod_template_etiqueta` (`cod_template_etiqueta`),
KEY `cod_marca` (`cod_marca`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


Itens de pedido

CREATE TABLE `cc_pedido_item` (
`cod_empresa` int(11) NOT NULL default '1',
`cod_pedido_compra` int(11) NOT NULL default '0',
`nr_sequencia_cc` int(11) NOT NULL default '0',
`cod_produto` varchar(30) default NULL,
`ccusto` varchar(15) default NULL,
`sub_conta` varchar(15) default NULL,
`conta` varchar(15) default NULL,
`situacao` int(11) NOT NULL default '10',
`qtd_pedida` double(16,4) default NULL,
`qtd_recebida` double(16,4) default NULL,
`preco_unit` double(22,10) default NULL,
`perc_desconto` double(7,6) default NULL,
`aliquota_ipi` double(8,7) NOT NULL default '0.0000000',
`dt_solicitada` date default NULL,
`obs_item` text,
`dt_previsao_entrega` datetime default NULL,
`ind_certificado` binary(1) default NULL,
`vl_cotacao` double(16,4) default NULL,
`cod_pedido_venda` int(11) default NULL,
`ind_pe` binary(1) default '0',
`ind_reserva` binary(1) default '0',
`vl_custo_internado` float(16,4) default NULL,
`nr_sequencia_venda` int(11) default '0',
`vl_ICMS_substituicao` double(16,4) default NULL,
`aliquota_icms_st` double(7,6) default NULL,
`cod_processo_importacao` int(11) default NULL,
`nr_adicao` int(11) default NULL,
`nr_adicao_sequencia` int(11) default NULL,
`aliquota_icms` double(7,6) default NULL,
`aliquota_iss` double(7,6) default NULL,
`aliquota_pis` double(7,6) default NULL,
`aliquota_cofins` double(7,6) default NULL,
`aliquota_ii` double(7,6) default NULL,
`vl_icms` double(16,4) default NULL,
`vl_iss` double(16,4) default NULL,
`vl_pis` double(16,4) default NULL,
`vl_cofins` double(16,4) default NULL,
`vl_ii` double(16,4) default NULL,
`vl_ipi` double(16,4) default NULL,
PRIMARY KEY (`cod_empresa`,`cod_pedido_compra`,`nr_sequencia_cc`),
KEY `situacao` (`situacao`),
KEY `cod_empresa` (`cod_empresa`,`cod_pedido_venda`),
KEY `ccusto` (`ccusto`),
KEY `conta` (`conta`,`sub_conta`),
KEY `cod_produto` (`cod_produto`),
KEY `i_situacao` (`cod_empresa`,`cod_produto`,`situacao`,`dt_previsao_entrega`),
KEY `cod_processo_importacao` (`cod_processo_importacao`,`cod_empresa`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


Pedidos

CREATE TABLE `cc_pedido` (
`cod_empresa` int(11) NOT NULL default '1',
`cod_pedido_compra` int(11) NOT NULL default '0',
`cod_fornecedor` int(11) default NULL,
`cod_colaborador` int(11) NOT NULL default '0',
`moeda` varchar(5) default 'R$',
`cod_transportadora` int(11) default NULL,
`cod_cond_pagto` varchar(20) default NULL,
`dt_pedido` date default NULL,
`nr_pedido_fornecedor` varchar(20) default NULL,
`dt_previsao_entrega` datetime default NULL,
`situacao` int(11) default NULL,
`tp_envio` int(11) default NULL,
`desc_envio` varchar(255) default NULL,
`obs_pedido` text,
`dt_envio` datetime default NULL,
`tp_frete` int(11) default NULL,
`contato` varchar(150) default NULL,
`ddd_fax` int(11) default NULL,
`fax` varchar(15) default NULL,
`ddd_telefone` int(11) default NULL,
`vl_total_produtos` double(16,4) default NULL,
`telefone` varchar(15) default NULL,
`vl_total_ipi` double(16,4) default NULL,
`vl_total_pedido` double(16,4) default NULL,
`vl_frete` double(16,4) default NULL,
`perc_multa` double(7,6) default NULL,
`tp_juros` int(11) default NULL,
`perc_juros` double(7,6) default NULL,
`taxa_boleto` double(16,4) default NULL,
`perc_pontualidade` double(7,6) default NULL,
`cod_requisicao` int(11) default NULL,
`nop` varchar(15) default NULL,
`email` varchar(100) default NULL,
`senha` varchar(32) default NULL,
`obs_fornecedor` text,
`desc_cond_pagto` text,
`vl_desc_total` double(16,4) default NULL,
`dt_alteracao_eprocurement` datetime default NULL,
`ccusto` varchar(15) default NULL,
`ind_faturado_cliente` binary(1) default '0',
`dt_aprovacao` datetime default NULL,
`cod_forma_pagto` int(11) default NULL,
PRIMARY KEY (`cod_empresa`,`cod_pedido_compra`),
KEY `situacao` (`situacao`),
KEY `moeda` (`moeda`),
KEY `cod_fornecedor` (`cod_fornecedor`),
KEY `cod_transportadora` (`cod_transportadora`),
KEY `cod_cond_pagto` (`cod_cond_pagto`),
KEY `cod_colaborador` (`cod_colaborador`),
KEY `i_situacao` (`situacao`,`dt_previsao_entrega`,`cod_empresa`),
KEY `cod_requisicao` (`cod_requisicao`,`cod_empresa`),
KEY `nop` (`nop`),
KEY `ccusto` (`ccusto`),
KEY `cod_forma_pagto` (`cod_forma_pagto`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


Querry funcional

SELECT pedido_item.cod_empresa AS cod_empresa,
pedido_item.cod_pedido_compra AS cod_pedido_compra,
pedido_item.cod_produto,
desc_comercial,
qtd_pedida,
qtd_recebida,
pedido.dt_envio AS data,
obs_item
FROM cc_pedido AS pedido

JOIN cc_pedido_item AS pedido_item
ON pedido.cod_pedido_compra = pedido_item.cod_pedido_compra

JOIN cd_produto AS produto
ON pedido_item.cod_produto = produto.cod_produto

WHERE obs_item LIKE '%algo%'


Clausula desejada

ORDER BY pedido_item.cod_pedido_compra DESC


Edição feita por: Takahata, 20/12/2010, 21:16.





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq