- Fórum WMO
- → Squall Robert's Content
Squall Robert's Content
There have been 53 items by Squall Robert (Search limited from 10/06/2023)
#1017655 Pesquisa No Mysql - 2 Tabelas Ao Mesmo Tempo...
Posted by Squall Robert on 26/03/2012, 10:45 in PHP
Programas Utilizados
- Bancos de Dados (Firebird, Interbase, MySQL, etc.)
- Gerenciador de Bancos de Dados (IBExpert, IBOConsole, IBConsole, etc.)
- Tabelas abaixo
FILIAL
FIL_CODIGO FIL_NOME
1 MATRIZ
2 FILIAL 1
3 FILIAL 2
FUNCIONARIOS
FUN_CODIGO FIL_CODIGO FUN_NOME
1 1 JOÃO
2 2 JOAQUIM
3 2 JOSÉ
4 3 MÁRCIO
5 null PEDRO
Pequena História
Na verdade, utilizamos palavras em inglês, padronizadas pela ANSI (American National Standards Institute), originalmente criada pela IBM com o nome de SEQUEL (Structured English Query Language) e posteriormente abreviada para SQL, para efetuar consultas de dados a um banco de dados relacional. Mas o que vem a ser um Join? Esta palavra em inglês significa Unir ou União e a utilizamos quando precisamos buscar dados em outras tabelas desde que satisfaça as condições para isso.
Porém ainda paira a dúvida: utilizo Join, Inner Join, Left Join, Right Join ou me jogo do 14º Andar?
Esta história de direita e esquerda funciona em qualquer banco de dados relacional pois são padrões definidos para se manter a compatibilidade entre os bancos de dados. Imagine você como seria se para fazer uma busca no Firebird você tivesse de escrever:
SELECT * FROM FUNCIONARIOS
WHERE FIL_CODIGO = 1
E no DB2 fosse completamente diferente:
FROM FUNCIONARIOS WHERE FIL_CODIGO = 1 SELECT *
Isto certamente causaria um "Access Violation" em sua cabeça.
Vamos ao que interessa.
Entendendo LEFT, RIGHT e INNER
Quando dizemos que a tabela será Left ou Right, estamos informando ao comando SQL que ele deve obedecer o sentido para a Direita ou para a Esquerda, ou seja, ao utilizarmos Left Join o banco de dados irá analisar a estrutura da tabela da Direita e comparar com a tabela da Esquerda (leia-se Direita para a Esquerda), veja o desenho.
Left Join
Na primeira situação temos o Left Join, a seta está apontando para a tabela FUNCIONARIOS simbolizando que a precedência é da tabela da Esquerda, então podemos dizer que no select abaixo, serão listados todos os Funcionários, mesmo aqueles que não tem Filial cadastrada.
SELECT A.FUN_NOME, B.FIL_NOME FROM FUNCIONARIOS A
LEFT JOIN FILIAL B ON A.FIL_CODIGO = B.FIL_CODIGO
-- RESULTADO DA CONSULTA --
FUN_NOME FIL_NOME
JOÃO MATRIZ
JOAQUIM FILIAL 1
JOSÉ FILIAL 1
MÁRCIO FILIAL 2
PEDRO null
Repare que Pedro foi incluído no resultado, porém ele não possui uma Filial associada em seu cadastro. Este tipo de Join é o mais utilizado quando não se tem certeza que todos os registros possuem ligação entre as tabelas e também na maioria das vezes por questões de desempenho.
Right Join
Na segunda situação foi utilizado o Right Join, também conhecido apenas por Join, que aponta para a tabela FILIAL simbolizando a precedência da tabela da Direita, logo, concluímos que os dados da tabela Filial devem existir para que o registro seja trazido no Select.
SELECT A.FUN_NOME, B.FIL_NOME FROM FUNCIONARIOS A
RIGHT JOIN FILIAL B ON A.FIL_CODIGO = B.FIL_CODIGO
-- AINDA PODEMOS UTILIZAR SEM A PALAVRA RIGHT
/*
SELECT A.FUN_NOME, B.FIL_NOME FROM FUNCIONARIOS A
JOIN FILIAL B ON A.FIL_CODIGO = B.FIL_CODIGO
*/
-- RESULTADO DA CONSULTA --
FUN_NOME FIL_NOME
JOÃO MATRIZ
JOAQUIM FILIAL 1
JOSÉ FILIAL 1
MÁRCIO FILIAL 2
Note que o funcionário Pedro desta vez não foi incluído na lista de resultados, isto ocorreu porque esta consulta traz apenas registros onde existe um cadastro de Filial para o Funcionário.
Inner Join
Temos ainda a situação do Inner Join que nada mais faz do que observar se existem registros combinados em ambas as tabelas, ou seja, para que um registro seja incluído na lista de resultados, o campo de ligação entre duas tabelas deve satisfazer as condições em ambas. O resultado desta consulta seria algo muito semelhante ao Join.
Conclusão
Com algum conhecimento básico para interação entre tabelas, podemos efetuar consultas complexas ao banco de dados envolvendo resultados perfeitamente controlados. Isto garante não somente credibilidade em consultas mas também desempenho do sistema quando utilizado corretamente. Ainda existem outros tipos de Join, porém seus resultados são semelhantes ou seu uso é muito pouco frequente. Para quem quiser saber mais a respeito de consultas SQL, basta ler um livro de Banco de Dados (qualquer um que seja pois todos tem muito conteúdo sobre PL/SQL).
#1017621 Erro Include Arquivo
Posted by Squall Robert on 23/03/2012, 16:16 in PHP
colocar ai para entender como esta sendo feitos os includes....
#1017625 Erro Include Arquivo
Posted by Squall Robert on 23/03/2012, 19:16 in PHP
tudos os includes tem que partir do INDEX
ou seja dentro do produtos vc tem que referencia o diretorio tb
tipo include('modulos/arquivo.php');
se vc dentro do modudos for inserir alguma coisa tem que pensar que isso vai esta dentro da index
sendo assim
tipo include('pasta/arquivo.php');
#1019380 Upload De Imagens Com Redimensionamento De Tamanho Especifico
Posted by Squall Robert on 11/09/2012, 14:09 in PHP
<?php /** * @author squall * @copyright 2009 */ class Thumbs { //variaveis necessárias para gerar thumbs public $caminho; public $nome ; public $largura_max; public $altura_max; public $arquivo; public $ext; public $tipo ; public $ImagemGerada; public function Thumbs() { // definindo valores padrão de variaveis $this->tipo = 1; $this->nome = date('YmdHis'); $this->altura_max = 80; $this->largura_max = 250; } //preparando imagem public function Prepare() { // verifica imagem se existe if(file_exists($this->arquivo)) { // gerando nome da nova imagem $this->NomeImagem(); if($this->arquivo != $this->ImagemGerada) { $img_tamanho = @getimagesize($this->ImagemGerada); if(!file_exists($this->ImagemGerada) || $img_tamanho[0] > $this->largura_max || $img_tamanho[1] > $this->altura_max) { // pegando extensão da imagem $this->ext = substr($this->arquivo,-3); // verificando se o caminho e existente/ se não cria diretório $this->CriarDir(); // gerando imagem $this->Gerar(); return $this->ImagemGerada; } else return $this->ImagemGerada; // retorno da imagem existente } else { // pegando tamanho da imagem $img_tamanho = @getimagesize($this->arquivo); if(!file_exists($this->ImagemGerada) || $img_tamanho[0] > $this->largura_max || $img_tamanho[1] > $this->altura_max) { // pegando extensão da imagem $this->ext = substr($this->arquivo,-3); // verificando se o caminho e existente/ se não cria diretório $this->CriarDir(); // gerando imagem $this->Gerar(); return $this->ImagemGerada; } else return $this->ImagemGerada; // retorno da imagem existente } } else return false; //retorna false se o arquivo nao for encontrado } // Gerador de Thumbs public function Gerar() { // se extesão for jpg if($this->ext == "jpg") { $imagem_orig = @imagecreatefromjpeg($this->arquivo); } elseif($this->ext=="png") { $imagem_orig = @ImageCreateFromPNG($this->arquivo); } elseif($this->ext=="gif") { $imagem_orig = @ImageCreateFromGIF($this->arquivo); } // pegando tamanhos da imagem $largura_original = @ImagesX($imagem_orig); $altura_original = @ImagesY($imagem_orig); $altura = $altura_original; $largura = $largura_original; if( $largura > $this->largura_max) { $largura = $this->largura_max; $altura = $altura * ($largura / $largura_original); } if($altura > $this->altura_max) { $largura = $largura * ($this->altura_max/$altura); $altura = $this->altura_max; } //gerando imagem final $imagem_final=@ImageCreateTrueColor($largura,$altura); @ImageCopyResampled($imagem_final,$imagem_orig, 0, 0, 0, 0,$largura,$altura,$largura_original,$altura_original); $imagem_ext=@substr($this->arquivo,-3); // gerando arquivo if(strtolower($this->ext=="jpg")) @imagejpeg($imagem_final,$this->ImagemGerada,80); if(strtolower($this->ext == "png")) @imagepng($imagem_final,$this->ImagemGerada); if(strtolower($this->ext == "gif")) @imagegif($imagem_final,$this->ImagemGerada); // destruindo informações desnecessárias @imageDestroy($imagem_orig); @imageDestroy($imagem_final); //retornando caminho da nova imagem } public function CriarDir() { if(!is_dir($this->caminho)) { mkdir($this->caminho,0777); } } public function NomeImagem() { //pegando nome original da imagem $imagemLimpando = @explode("/",$this->arquivo); $imagemNome = $imagemLimpando[(count($imagemLimpando) - 1)]; // se o tipo for igual a 1 ele usa o nome original da imagem // se não ele usa o timestamp para gerar um nome unico if($this->tipo == 1) $imagem_gerada=$this->caminho . $imagemNome; else $imagem_gerada = $this->caminho . $this->nome . "." . $this->ext; $this->ImagemGerada = $imagem_gerada; // echo "ESTA E A IMAGEM GERARAD" . $this->ImagemGerada . "<BR>"; } } ?>
para usar basta fazer isso
//$thumbs = new Thumbs(); //$thumbs->caminho = "imagens/logomarcas/"; //$thumbs->arquivo = $_SESSION['usuario']['configuracoes']['arquivo_logomarca']; //$imagem = $thumbs->Prepare();
#1019260 Filtrar Dados
Posted by Squall Robert on 24/08/2012, 11:39 in PHP
#1019309 Filtrar Dados
Posted by Squall Robert on 30/08/2012, 17:42 in PHP
select a.id, a.pedidofisico, a.data, a.cliente, a.cpf_cnpj, a.data, b.id_pedido, b.valorun, b.valorreal, b.precodif, b.produto, b.qtd, b.qtd1, b.saldo from pedido a, pedido_itens b where a.pedidofisico = '263068' AND a.pedidofisico = b.id_pedido order by a.id DESC
e no banco existe o pedido do resultado
select a.id, a.pedidofisico, a.data, a.cliente, a.cpf_cnpj, a.data, b.id_pedido, b.valorun, b.valorreal, b.precodif, b.produto, b.qtd, b.qtd1, b.saldo from pedido a INNER JOIN pedido_itens b ON (a.pedidofisico = b.id_pedido) where a.pedidofisico = '263068' order by a.id DESC
aparentement esta normal...
mas precisa ver os GET´S para entender como isso esta chegando...
#1019378 Verificar Se O Registro Já Existe
Posted by Squall Robert on 11/09/2012, 14:02 in PHP
isso faz com que se existir ele atualiza se nao insere...
mas no seu caso e mais simples....
faz uma consulta e com o resultado vc verifica se tem ou nao ....
#1019292 Filtrar Dados
Posted by Squall Robert on 28/08/2012, 11:18 in PHP
resultado foi:
Resource id #7
tira o mysqlquery
e imprime
#1019401 Charset Para Variáveis Php
Posted by Squall Robert on 13/09/2012, 18:27 in PHP
#1017634 Ignorar Caractéres Com Assento Numa Pesquisa
Posted by Squall Robert on 24/03/2012, 09:44 in PHP
mas como a busca la dve estar com %% no incio ele vai trazer tudo que contenha a
então coloca 'a%'
ai ele vai trazer tudo que começa com a
não esquece de clicar no Sinal de MAIS NO CANTO DO POST para dizer que foi ultil para vc
#1017635 Somar Coluna
Posted by Squall Robert on 24/03/2012, 09:45 in PHP
mas coloca o codigo inteiro para entender melhor
#1017560 Erro Undefined Variable
Posted by Squall Robert on 20/03/2012, 16:12 in PHP
para eu ver como esta
#1017624 Ignorar Caractéres Com Assento Numa Pesquisa
Posted by Squall Robert on 23/03/2012, 19:13 in PHP
#1017549 Erro Undefined Variable
Posted by Squall Robert on 20/03/2012, 14:13 in PHP
a mesagem esta avisandoque você não definiu a variavel.
vc pode definir no seu php para não exibir os notices.
mas de qualquer forma é so definir a variavel .
e o arquivo que esta com erro vc não postou.
#1019379 Pula Sequencia De Registro
Posted by Squall Robert on 11/09/2012, 14:07 in PHP
faça um looping com resultado e compare....
#1017610 Ajuda Com Criação De Ranking
Posted by Squall Robert on 22/03/2012, 19:00 in PHP
#1017602 Ajuda Com Criação De Ranking
Posted by Squall Robert on 22/03/2012, 13:28 in PHP
dentro do lopping vc quarda os valores de cada item que passa em variaveis para comparar com o proximo.
como vc estar rodenando vai estar sempre na ordem correta.
ai é so comparar se os dados que definema ordem sãoi iguais e so atribuir o mesmo ranking
mais ou menos isss
rankking = 0; $var_vitorias = ''; $var_potnos = ''; while(// lopping com os dados) { if($var_vitorias == $dados['vitoria'] && $var_potnos == $dados['pontos']) { $rannking = $rankking; } else { $rankking++; } echo $rankking . "º - ". $nome; . "<br>"; $var_vitorias = $dados['vitoria']; $var_potnos = $dados['pontos']; }
#1017547 Oportunidade Para Freelancer
Posted by Squall Robert on 20/03/2012, 14:08 in PHP
meu skype squallrobert
atualmente trablaho no desenvolvimento de um sistema de rastreamento de veiculo, meu tempo e curto ..
mas aparentemente o sistema e pequeno.. podemos ver qual a melhor forma.
#1017558 Atualizar Ereg_Replace
Posted by Squall Robert on 20/03/2012, 16:07 in PHP
consulte o php.net
#1019400 Problema Com Inner Join
Posted by Squall Robert on 13/09/2012, 18:22 in PHP
e tratar dentro do laço de reptição
dentro do while ou foreach
vc salva a id da categoria em um variavel e sempre checa
tipo de for = 0 ou diferente da vara que vc criou vc cria o item da lista que corresponde a categoria e adiciona o item nesta lista
se for igal a sua var vc so adiicona a lista
mais ou menos isso.ç..
#1019302 Formulário Php
Posted by Squall Robert on 30/08/2012, 11:37 in PHP
cria um form com nomes todos como vetor "[]"
ai so colocar em um form onde a quantidade do for é o numero que vc deseja criar de form...
quando vc der submit vc vai poder pegar os dados como vetor
#1017633 Contar Checkbox
Posted by Squall Robert on 24/03/2012, 09:39 in PHP
seguindo o padrão todos checks tem que esta com o mesmo nome
assim name='lista[]'
ao postar ele envia todos seleiconados
ai é so fazer um looping e ir somando
#1019376 Erro: Object Of Class Requerimento Could Not Be Converted To String In
Posted by Squall Robert on 11/09/2012, 13:59 in PHP
#1019261 Recuperar Valores Do Array
Posted by Squall Robert on 24/08/2012, 11:44 in PHP
mas uma dica e você usar o foreach
assim
foreach($_SESSION['cart'] as $col => $row)
{
// aqui voce tem todos os itens do carrinho
// onde $col, corresponde a indice do item
// e $row o valor..
}
#1017562 Dias Da Semana, Cada Dia Uma Variável
Posted by Squall Robert on 20/03/2012, 16:19 in PHP
tabela cardapio
cadastre todos os protado na tabela platos
na tabela cardapio vc coloca id_prato que vem da tabela pratos e coloca id referente ao dia da semana..
e valor e tal ...
ou seja para cada dia da semana tera 9 pratos de relaciomento.
ai e so mostrar da forma que vc quizer
- Fórum WMO
- → Squall Robert's Content
- Privacy Policy
- Regras ·