NeNeM_BsP 0 Denunciar post Postado Fevereiro 3, 2011 Galera nao postei no mesmo topico atraz pq esse erro eu nunca vii seguinte Eu to fazendo um SELECT em duas tabelas diferentes como o go back me explicou usando Select * From Cadastro INNER JOIN Perfil ON Perfil.ID_Cliente = Cadastro.ID só que fazendo esse select o sql ta retornando as informações erradas fazendo o select de uma unica tabela ele retorna o nome sobrenome e o pais de cada user perfeitamente mais fazendo esse select ai de cima pra buscar em duas tabelas ele em vezes de buscar o ID da session ele busca o ID de baixo exemplo o numero ID 1 se chama Felipe Souza e o ID 2 se chama Gustavo Lisboua quando eu logo com o GUSTAVO ele aparece as informações certas do gustavo mais quando logo com o felipe ele aparece as informações do do gustavo traduzindo quando eu logo com o ID 1 ele mostra as informações do ID 2 :s alguem sabe resolver esse problema ? des de ja agradeço :joia: Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Fevereiro 3, 2011 não use o *, especifique quais campos de qual tabela você quer buscar. SELECT Cadastro.Data, Perfil.ID_Cliente... Compartilhar este post Link para o post Compartilhar em outros sites
NeNeM_BsP 0 Denunciar post Postado Fevereiro 3, 2011 esse codigo ta errado era só um exemplo vo postar o meu esse codigo $sql = "SELECT * FROM cadastro WHERE id = '$id'"; funciona perfeitamente mais quando eu tento usar o que o GO Back me passou $sql = "Select * From cadastro INNER JOIN perfil ON perfil.ID = cadastro.id"; ele da esse erro mauco e uma coisa que eu observei é que quando eu logo com qualquer usuario do meu banco de dados ele aparece com as informações do ultimo cadastrado. com esse codigo acima q o go back tentou me ajudar Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Fevereiro 3, 2011 exporte as duas tabelas e poste aqui para análise. acredito que você esteja fazendo errado o relacionamento, pelo campo errado. porém considere a minha dica do post anterior. Compartilhar este post Link para o post Compartilhar em outros sites
NeNeM_BsP 0 Denunciar post Postado Fevereiro 3, 2011 Tablea perfil -- phpMyAdmin SQL Dump -- version 2.10.1 -- http://www.phpmyadmin.net -- -- Servidor: localhost -- Tempo de Geração: Fev 03, 2011 as 07:00 PM -- Versão do Servidor: 5.0.45 -- Versão do PHP: 5.2.5 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; -- -- Banco de Dados: `star` -- -- -------------------------------------------------------- -- -- Estrutura da tabela `perfil` -- CREATE TABLE `perfil` ( `id` int(10) NOT NULL auto_increment, `quem_eu_sou` varchar(255) NOT NULL, `humor` varchar(255) NOT NULL, `MSN` varchar(255) NOT NULL, `orkut` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ; -- -- Extraindo dados da tabela `perfil` -- INSERT INTO `perfil` (`id`, `quem_eu_sou`, `humor`, `MSN`, `orkut`) VALUES (3, '', 'Feliz', '', '', '', '', '', '', '', '', '', ''), (4, '', 'Feliz', '', '', '', '', '', '', '', '', '', ''), (5, '', 'Triste', '', '', '', '', '', '', '', '', '', ''); Tabela cadastro -- phpMyAdmin SQL Dump -- version 2.10.1 -- http://www.phpmyadmin.net -- -- Servidor: localhost -- Tempo de Geração: Fev 03, 2011 as 06:58 PM -- Versão do Servidor: 5.0.45 -- Versão do PHP: 5.2.5 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; -- -- Banco de Dados: `star` -- -- -------------------------------------------------------- -- -- Estrutura da tabela `cadastro` -- CREATE TABLE `cadastro` ( `id` int(11) NOT NULL auto_increment, `nome` varchar(255) NOT NULL, `sobrenome` varchar(255) NOT NULL, `senha` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, `cidade` varchar(255) NOT NULL, `estado` varchar(255) NOT NULL, `pais` varchar(255) NOT NULL, `sexo` varchar(255) NOT NULL, `nascimento_dia` varchar(255) NOT NULL, `nascimento_mes` varchar(255) NOT NULL, `nascimento_ano` varchar(255) NOT NULL, `data` date NOT NULL, `avt` varchar(255) NOT NULL, `cache` varchar(255) NOT NULL, `cor` varchar(255) NOT NULL, `cortitulos` varchar(255) NOT NULL, `corbarras` varchar(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ; -- -- Extraindo dados da tabela `cadastro` -- INSERT INTO `cadastro` (`id`, `nome`, `sobrenome`, `senha`, `email`, `cidade`, `estado`, `pais`, `sexo`, `nascimento_dia`, `nascimento_mes`, `nascimento_ano`, `data`, `avt`, `cache`, `cor`, `cortitulos`, `corbarras`) VALUES (4, 'Weverton', 'F.', '123', 'bspdesigner@gmail.com', 'Rio de Janeiro', 'RJ', 'Brazil', 'Masculino', '9', 'Fevereiro', '1986', '0000-00-00', 'avt/sf.png', '', '#DFEAF8', '', ''), (5, 'Talita', 'Gomes', '123', 'aa@gmail.com', 'Rio de Janeiro', 'Sul', 'Brazil', 'Feminino', '13', 'Dezembro', '1998', '0000-00-00', 'avt/sf.png', '', '#DFEAF8', '', ''); Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Fevereiro 3, 2011 e qual é o campo que deveria ligar uma tabela na outra? a 'chave estrangeira' ? Compartilhar este post Link para o post Compartilhar em outros sites
NeNeM_BsP 0 Denunciar post Postado Fevereiro 3, 2011 o campo ID mais nao sei criar essa tal chave estrangeira aiii Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Fevereiro 3, 2011 uê cara.. imagina assim, você tem uma tabela com relação 1:1 estude modelagem SQL. TABLE categoria id, nome TABLE produto id, id_categoria, nome, preco `produto`.`id_categoria` é a minha chave estrangeira. o meu JOIN ficaria: ... JOIN categoria ON categoria.id = produdo.id_categoria entendeu ? por essa minha modelagem, cada produto só está relacionado a uma unica categoria. Compartilhar este post Link para o post Compartilhar em outros sites
NeNeM_BsP 0 Denunciar post Postado Fevereiro 3, 2011 Parei olhei sua explicação entendi tentei criar um campo com valor inteiro com o nome cod_u ai fiz o JOIN no php $sql = "SELECT * FROM cadastro INNER JOIN perfil ON cadastro.id = perfil.cod_u"; mais assim ele só retorna o valor da tabela cadastro e nao aparece os valores da tabela perfil mais alguma ideaa :ermm: Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Fevereiro 3, 2011 e você colocou os valores na coluna perfil.cod_u ? agora faça oque eu disse lá em cima. não use o *, e especifique os campos que você quer. caso tenha 2 campos 'com mesmo nome', dê um ALIAS para um deles. (pesquise) Compartilhar este post Link para o post Compartilhar em outros sites
NeNeM_BsP 0 Denunciar post Postado Fevereiro 3, 2011 Criei outra tabela de perfil com um campo chamado ligar adicionei a chave estrangeira em ligar depoix de muito estudar aki e to usando o INNER JOIN como vcs me mostraram e continua o mesmo erro por causa do INNER JOIN todos os usuarios que logam tem as informações iguais as do ultimo cadastrado ja to ficando maluco com isso to des de 7 horas da manhã tentando resolver esse problema e ja saum 9 e 20 da noite.. alguem pode tentar me dar mais uma ajuda de como dar um select em duas tabelas muito obrigado William por tentar me ajudar fera :( Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Fevereiro 3, 2011 todos os usuarios que logam tem as informações iguais as do ultimo cadastrado está me parecendo que o teu erro é em outro lugar, e não no INNER JOIN. mostre como você faz a consulta para saber os dados do usuario. Está usando um WHERE ne?! Compartilhar este post Link para o post Compartilhar em outros sites
NeNeM_BsP 0 Denunciar post Postado Fevereiro 4, 2011 Amigao consegui resolver meu problema fuçando e inventando codigos que no caso ja existem mais eu desconhecia.. realmente o meu problema era no INNER JOIN e eu to usando o WHERE resolvi meu problema assim olha com esses codigos q tentei inventar <?php $sql = "SELECT * FROM cadastro INNER JOIN perfil ON cadastro.id = ligar WHERE cadastro.id = '$id'"; $rt = mysql_query($sql) or die(mysql_error()); while($l=mysql_fetch_array($rt)){ $nome = $l['nome']; $sobrenome = $l['sobrenome']; $pais = $l['pais']; $humor = $l['humor']; } ?> muito obrigado meu amigo só tu mesmo pra me dar essa atenção qualquer coisa estamos ai só mandar uma MP.. abraçOs e Boa noite :clap: Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Fevereiro 4, 2011 parabéns por ter resolvido.. ainda assim, não entendi onde você tava errado.. hehe então cara.. esse select só vai trazer sempre uma unica linha ne?! então neste caso (select que retorna uma unica linha), você não precisa do loop. podendo trocar: while($l=mysql_fetch_array($rt)){ $nome = $l['nome']; $sobrenome = $l['sobrenome']; $pais = $l['pais']; $humor = $l['humor']; } por: $l=mysql_fetch_assoc($rt);//o _assoc() terá melhor performance, já que você só usa o retorno associativo. $nome = $l['nome']; $sobrenome = $l['sobrenome']; $pais = $l['pais']; $humor = $l['humor']; ainda assim, geralmente é desnecessária essa atribuição na maioria dos casos. Compartilhar este post Link para o post Compartilhar em outros sites
NeNeM_BsP 0 Denunciar post Postado Fevereiro 5, 2011 é realmente usar o mysql_fetch_assoc melhjora a performace do select parabens William sempre inovando :joia: Compartilhar este post Link para o post Compartilhar em outros sites