Jump to content


LeoB

Member Since 16/12/2003
Offline Last Active 18/10/2013, 10:13
***--

#1017752 Problema Com Select

Posted by LeoB on 30/03/2012, 22:16

Tente assim:

SELECT t2.cod_transp,
t2.nome
FROM (SELECT t1.cod_transp,
t1.nome
FROM transportadora t1
INNER JOIN mrh_transportadora mt1
ON mt1.cod_transp = t1.cod_transp
INNER JOIN mrh_cidade mc1
ON mc1.cod_mrh = mt1.cod_mrh
WHERE mc1.cod_cid = $Origem) t2
INNER JOIN mrh_transportadora mt2
ON mt2.cod_transp = t2.cod_transp
INNER JOIN mrh_cidade mc2
ON mc2.cod_mrh = mt2.cod_mrh
WHERE mc2.cod_cid = $Destino



#1017731 Problema Com Select

Posted by LeoB on 30/03/2012, 11:16

Com a lógica que passei dá pra fazer. Você tentou?


#1017725 Problema Com Select

Posted by LeoB on 29/03/2012, 23:32

Entenda o SQL e tente fazer. Se não conseguir, detalhe melhor as tabelas que você tem e os relacionamentos.


#1017723 Problema Com Select

Posted by LeoB on 29/03/2012, 22:16

Eu não entendi a estrutura do seu banco, mas vamos supor duas tabelas: transportadora (id,nome) e destinos (id,idtrans,idcidade).

Primeiro, selecione as transportadoras que atendem a origem:

SELECT t1.id,t1.nome
FROM transportadoras t1
INNER JOIN destinos d1
ON t1.id = d1.idtrans
WHERE d1.idcidade = $Origem

Daí, dentre essas que atendem a origem, selecione as que atendem ao destino:

SELECT t2.id,
t2.nome
FROM (SELECT t1.id,
t1.nome
FROM transportadoras t1
INNER JOIN destinos d1
ON t1.id = d1.idtrans
WHERE d1.idcidade = $Origem) t2
INNER JOIN destinos d2
ON d2.idtrans = t2.id
WHERE d2.idcidade = $Destino



#1017642 Url Amigável, Mesma Qtde De Variáveis, Mas Diferentes

Posted by LeoB on 24/03/2012, 10:42

Faz assim:

RewriteRule  ^([a-z]+)/?$ index.php?pg=$1 [L]

RewriteRule  ^shows/([0-9]+)/?$ index.php?pg=shows&$ano=$1 [L]
RewriteRule  ^shows/([0-9]+)/([0-9]+)/([a-z]+)/?$ index.php?pg=shows&ano=$1&$3=$2 [L]

RewriteRule  ^news/([a-z,_-]+)/?$ index.php?pg=news&titulo=$1 [L]

RewriteRule  ^media/([a-z]+)/?$ index.php?pg=media&tipo=$1 [L]

RewriteRule  ^repert/([a-z]+)/?$ index.php?pg=repert&modo=$1 [L]



#1017493 Lendo Alert De Erro!

Posted by LeoB on 17/03/2012, 16:00

Pra que testar no IE5?


#1017014 Mysql Blind Injection

Posted by LeoB on 17/02/2012, 12:37

Do mesmo jeito que se defende do sql injection. Tratando tudo antes de jogar na query.


#1015659 Função - Problema C/ Acentuação - Collate

Posted by LeoB on 20/12/2011, 19:45

Está rodando local ou online? Não manjo muito disso, mas de repente é alguma configuração do próprio servidor. Manda um SHOW VARIABLES e dá uma olhada nas variáveis character_set_*. Vê se aparece alguém diferente de latin1 ou uft8. Na pior das situações, você pode listar os caracteres manualmente.

SELECT 'á' REGEXP '[0-9aáãà]'



#1015657 Função - Problema C/ Acentuação - Collate

Posted by LeoB on 20/12/2011, 18:27

Como a função fica no banco mysql, acho que é o collation dele que você deveria alterar. Nunca alterei isso nesse banco em particular, então não sei os efeitos, mas testa aí. Qualquer coisa, você pode usar regex. Pelo menos não precisa fazer uma função própria.

SELECT 'á' REGEXP '[[:alnum:]]'



#1015524 Captcha - Session

Posted by LeoB on 13/12/2011, 18:14

Acontece que o contato.php é processado primeiro que o captcha.php. Primeiro o cliente recebe o HTML que o contato gera. Depois é que o navegador vai acessar o captcha pra gerar o código e baixar a imagem. Assim, o contato fica mesmo sempre atrasado, como você está vendo. Não se esqueça que o PHP não entende HTML. O HTML que você escreve o PHP manda direto pro navegador sem se importar. Quem vai entender o <img> e baixar a imagem é o cliente.


#1015494 Script Nao Busca O $_Post

Posted by LeoB on 12/12/2011, 11:55

Na linha de baixo continua errado.

$dados = array('id_enquete'=>$id_enquete, 'flag_status'=>1, 'resposta'=>$resposta[$num], 'posicao'=>1000);
                db_executa('tbenquete_resposta',$dados);

$dados = array('id_enquete'=>$id_enquete, 'flag_status'=>1, 'resposta'=>$_POST['resposta'.$num], 'posicao'=>1000);
                db_executa('tbenquete_resposta',$dados);



#1015202 Maior Soma, Como Conseguir

Posted by LeoB on 27/11/2011, 18:09

Ordena pela soma e pega só o primeiro.

SELECT e.descricao,
SUM(o.valor) AS soma,
AVG(o.valor) AS media
FROM equipamento e,
ordemservico o
WHERE e.codequip = o.codequip
GROUP BY e.descricao
ORDER BY soma DESC
LIMIT 0, 1



#1015075 Problema Com Sessão

Posted by LeoB on 23/11/2011, 16:57

Esse código que você postou aí não pode fazer o que você está dizendo. Se alguém muda o valor da sessão, é em outro lugar.


#1014575 O Que Ocupa Mais Espaço Null Ou Vazio?

Posted by LeoB on 04/11/2011, 08:16

Vazio ocupa mais. Porque vazio ainda é um valor. NULL é a ausência de valor.


#1014057 Velocidade Da Consulta Mysql Em Duas Tabelas

Posted by LeoB on 05/10/2011, 17:11

Usar um INNER JOIN deve melhorar a situação. E também não tem necessidade de GROUP BY aí.

SELECT tabela_clientes.nome,
tabela_clientes.cpf_cnpj,
tabela_clientes.endereco,
tabela_clientes.telefone,
tabela_clientes.codigo_cliente,
tabela_geracao.valor_mensalidade
FROM tabela_clientes
INNER JOIN tabela_geracao
ON tabela_clientes.codigo_cliente = tabela_geracao.codigo_cliente
WHERE tabela_geracao.codigo_cliente LIKE '%$data%'
AND tabela_geracao.bloqueado = 0
ORDER BY tabela_clientes.nome ASC

Quando se relaciona as tabelas da maneira que você fez, primeiro o MySQL vai fazer todas as combinações possíveis entre os registros e depois filtrar. Supondo que tabela_clientes tenha X registros e tabela_geracao tenha Y registros, primeiro ele monta X*Y registros e depois filtra pelo código. Usando o JOIN, na hora de relacionar os registros ele já filtra. Aí melhora o desempenho.




IPB Skin By Virteq