Moran 0 Denunciar post Postado Dezembro 4, 2011 e ai pessoal. to com um probleminha aqui. mas umavez conto com a paciencia e sabedoria de vocês. bom eu necessito mostrar na tela os seguintes dados. Produto | quantidade | valor(uni) | valor total( de cada produto| e acredito que usando o JOIN eu consigo fazer isso. No inicio: Agora estou primeiramente tentando mostrar o: Produto | Quantidade | valor(uni) e para isso estou dando uma olhada em JOIN.. tenho o seguinte codigo: $sql="SELECT carrinho.*, produto.`id_produtos` AS produto, clinte.`id_cliente` AS cliente FROM `produto` AS carrinho INNER JOIN `produto` AS produto ON carrinho.`produto_id_produtos` = produto.`id_produtos` INNER JOIN `cliente` AS cliente ON carrinho.`cliente_id_cliente` = cliente.`id_cliente` WHERE (carrinho.`cliente_id_cliente` = cliente.`id_cliente`) ORDER BY carrinho.`produto_id_produtos` ASC"; mas esta me aparecendo o seguinte erro #1054 - Unknown column 'clinte.id_cliente' in 'field list' ------------------------------------------------------------------------------------------------------------------- Compartilhar este post Link para o post Compartilhar em outros sites
Eduardo Villa 2 Denunciar post Postado Dezembro 4, 2011 Fiz algumas alterações nas ASPAS SIMPLES que você colocou Faça o teste assim... $sql = "SELECT carrinho.*, produto.id_produtos AS produto, clinte.id_cliente AS cliente FROM produto INNER JOIN carrinho ON carrinho.produto_id_produtos = produto.id_produtos INNER JOIN cliente ON carrinho.cliente_id_cliente = cliente.id_cliente WHERE (carrinho.cliente_id_cliente = cliente.id_cliente) ORDER BY carrinho.produto_id_produtos ASC"; Qualquer coisa, siga esta Syntax SQL INNER JOIN SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Dezembro 4, 2011 mas esta me aparecendo o seguinte erro #1054 - Unknown column 'clinte.id_cliente' in 'field list' O nome não seria cliente ao invés de clinte? Compartilhar este post Link para o post Compartilhar em outros sites
Moran 0 Denunciar post Postado Dezembro 5, 2011 Bom pessoal value pelas dicas... é verdade escrevi errado cliente. bom vou precisar de maos uma ajuda na questão do JOIN. tenho o seguinte codigo: $sql="SELECT carrinho.*, produto.`id_produtos` AS produto, clinte.`id_cliente` AS cliente FROM `produto` AS carrinho INNER JOIN `produto` AS produto ON carrinho.`produto_id_produtos` = produto.`id_produtos` INNER JOIN `cliente` AS cliente ON carrinho.`cliente_id_cliente` = cliente.`id_cliente` WHERE (carrinho.`cliente_id_cliente` = '".$id_cliente."' ) ORDER BY carrinho.`produto_id_produtos` ASC"; com esse codigo estou querendo unir 3 tabelas, mas quero que mostre apenas de uma determinado cliente( por exemplo, se no lugar de '".$id_cliente."' eu tiver o valor 6, eu quero unir as 3 tabelas para mostrar. id_cliente | Produto | quantidade | valor | id_cliente -> tabela cliente. Produto e valor -> da tabela produto. quantidade -> da tabela carrinho. erro que esta me aparecendo #1054 - Unknown column 'clinte.id_cliente' in 'field list' Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Dezembro 5, 2011 Aparentemente ainda está com erro de digitação em um local substitua por $sql="SELECT carrinho.*, produto.`id_produtos` AS produto, cliente.`id_cliente` AS cliente FROM `produto` AS carrinho INNER JOIN `produto` AS produto ON carrinho.`produto_id_produtos` = produto.`id_produtos` INNER JOIN `cliente` AS cliente ON carrinho.`cliente_id_cliente` = cliente.`id_cliente` WHERE (carrinho.`cliente_id_cliente` = '".$id_cliente."' ) ORDER BY carrinho.`produto_id_produtos` ASC"; deve pelo menos mudar de erro Compartilhar este post Link para o post Compartilhar em outros sites
Moran 0 Denunciar post Postado Dezembro 5, 2011 Mario, mudou o erro.. #1054 - Unknown column 'carrinho.cliente_id_cliente' in 'where clause' se alguem puder me ajudar, agradeceira muito. Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Dezembro 5, 2011 O erro é o mesmo só mudou a coluna que não é encontrada Post as estruturas destas tabelas pois acredito que este campo cliente_id_cliente não existe na tabela carrinho Compartilhar este post Link para o post Compartilhar em outros sites
Moran 0 Denunciar post Postado Dezembro 5, 2011 O erro é o mesmo só mudou a coluna que não é encontrada Post as estruturas destas tabelas pois acredito que este campo cliente_id_cliente não existe na tabela carrinho Existe sim... vou mostrar... -- --- Estrutura da tabela `cliente` -- CREATE TABLE IF NOT EXISTS `cliente` ( `id_cliente` int(255) NOT NULL AUTO_INCREMENT, `nome_cli` varchar(500) NOT NULL, `telefone_cli` varchar(100) NOT NULL, `endereco_cli` varchar(200) NOT NULL, `bairro_cli` varchar(200) NOT NULL, `numero_cli` varchar(45) NOT NULL, `complemento_cli` varchar(45) NOT NULL, `email_cli` varchar(300) NOT NULL, `senha_cli` varchar(45) NOT NULL, `pergunta_cli` varchar(500) NOT NULL, `resposta_cli` varchar(200) NOT NULL, PRIMARY KEY (`id_cliente`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ; -- -- Extraindo dados da tabela `cliente` -- INSERT INTO `cliente` (`id_cliente`, `nome_cli`, `telefone_cli`, `endereco_cli`, `bairro_cli`, `numero_cli`, `complemento_cli`, `email_cli`, `senha_cli`, `pergunta_cli`, `resposta_cli`) VALUES (6, 'cadastro', '53-87987979', 'seila', 'cidade', '222', '', 'cadastro@hotmail.com', 'c900a8bc5d4793472a1f3a4b1b5139a2', 'qual é o meu nome', 'cadastro'), (7, 'teste', '53-87987979', 'seila', 'cidade', '222', '', 'teste@hotmail.com', 'a0b42a1a9de89a34bc6271d2b403fdaa', 'qual é o meu nome', 'teste'); -- -------------------------------------------------------- -- -- Estrutura da tabela `produto` -- CREATE TABLE IF NOT EXISTS `produto` ( `id_produtos` int(11) NOT NULL AUTO_INCREMENT, `produto` varchar(500) NOT NULL, `descricao` varchar(500) NOT NULL, `valor` double(10,2) NOT NULL, `especie` varchar(100) NOT NULL, `img` blob NOT NULL, `principal` varchar(45) NOT NULL, `adm_id_adm` int(11) DEFAULT NULL, PRIMARY KEY (`id_produtos`), KEY `fk_produto_adm` (`adm_id_adm`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ; -- -- Extraindo dados da tabela `produto` -- INSERT INTO `produto` (`id_produtos`, `produto`, `descricao`, `valor`, `especie`, `img`, `principal`, `adm_id_adm`) VALUES (7, 'Lapis', 'Faber castel', 2.00, 'escritorio', 0x6172717569766f732f703734323536622e706e67, 'principal', NULL), (10, 'Estojo', 'sei la', 2.10, 'escritorio', 0x6172717569766f732f46616265722d43617374656c6c2d457475692d322d50656e732d42726f776e2d78696d6167652e706e67, 'principal', NULL); -- -------------------------------------------------------- -- -- Restrições para a tabela `carrinho` -- ALTER TABLE `carrinho` ADD CONSTRAINT `fk_carrinho_cliente` FOREIGN KEY (`cliente_id_cliente`) REFERENCES `cliente` (`id_cliente`) ON DELETE NO ACTION ON UPDATE NO ACTION, ADD CONSTRAINT `fk_carrinho_produto1` FOREIGN KEY (`produto_id_produtos`) REFERENCES `produto` (`id_produtos`) ON DELETE NO ACTION ON UPDATE NO ACTION; -- -- Restrições para a tabela `produto` -- ALTER TABLE `produto` ADD CONSTRAINT `fk_produto_adm` FOREIGN KEY (`adm_id_adm`) REFERENCES `adm` (`id_adm`) ON DELETE NO ACTION ON UPDATE NO ACTION; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Dezembro 5, 2011 onde foi criada a tabela carrinho? só vi um ALTER TABLE `carrinho` Compartilhar este post Link para o post Compartilhar em outros sites
Moran 0 Denunciar post Postado Dezembro 5, 2011 onde foi criada a tabela carrinho? só vi um ALTER TABLE `carrinho` Bah desculpa.. enviei mau.. ta em baixo.. -- -- Estrutura da tabela `carrinho` -- CREATE TABLE IF NOT EXISTS `carrinho` ( `id_carrinho` int(11) NOT NULL AUTO_INCREMENT, `quantidade` int(255) NOT NULL, `sessao` text NOT NULL, `cliente_id_cliente` int(255) NOT NULL, `produto_id_produtos` int(255) NOT NULL, PRIMARY KEY (`id_carrinho`), KEY `fk_carrinho_cliente` (`cliente_id_cliente`), KEY `fk_carrinho_produto1` (`produto_id_produtos`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=43 ; -- -- Extraindo dados da tabela `carrinho` -- INSERT INTO `carrinho` (`id_carrinho`, `quantidade`, `sessao`, `cliente_id_cliente`, `produto_id_produtos`) VALUES (39, 5, '6j8v70fjd2fucm8oscl4u16p17', 6, 10), (40, 5, '6j8v70fjd2fucm8oscl4u16p17', 6, 7), (41, 1, 'ut8jp3a588jfbpb6g7kegoosp4', 7, 10), (42, 1, 'ut8jp3a588jfbpb6g7kegoosp4', 7, 7); -- -------------------------------------------------------- -- -- Estrutura da tabela `cliente` -- CREATE TABLE IF NOT EXISTS `cliente` ( `id_cliente` int(255) NOT NULL AUTO_INCREMENT, `nome_cli` varchar(500) NOT NULL, `telefone_cli` varchar(100) NOT NULL, `endereco_cli` varchar(200) NOT NULL, `bairro_cli` varchar(200) NOT NULL, `numero_cli` varchar(45) NOT NULL, `complemento_cli` varchar(45) NOT NULL, `email_cli` varchar(300) NOT NULL, `senha_cli` varchar(45) NOT NULL, `pergunta_cli` varchar(500) NOT NULL, `resposta_cli` varchar(200) NOT NULL, PRIMARY KEY (`id_cliente`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ; -- -- Extraindo dados da tabela `cliente` -- INSERT INTO `cliente` (`id_cliente`, `nome_cli`, `telefone_cli`, `endereco_cli`, `bairro_cli`, `numero_cli`, `complemento_cli`, `email_cli`, `senha_cli`, `pergunta_cli`, `resposta_cli`) VALUES (6, 'cadastro', '53-87987979', 'seila', 'cidade', '222', '', 'cadastro@hotmail.com', 'c900a8bc5d4793472a1f3a4b1b5139a2', 'qual é o meu nome', 'cadastro'), (7, 'teste', '53-87987979', 'seila', 'cidade', '222', '', 'teste@hotmail.com', 'a0b42a1a9de89a34bc6271d2b403fdaa', 'qual é o meu nome', 'teste'); -- -------------------------------------------------------- -- -- Estrutura da tabela `produto` -- CREATE TABLE IF NOT EXISTS `produto` ( `id_produtos` int(11) NOT NULL AUTO_INCREMENT, `produto` varchar(500) NOT NULL, `descricao` varchar(500) NOT NULL, `valor` double(10,2) NOT NULL, `especie` varchar(100) NOT NULL, `img` blob NOT NULL, `principal` varchar(45) NOT NULL, `adm_id_adm` int(11) DEFAULT NULL, PRIMARY KEY (`id_produtos`), KEY `fk_produto_adm` (`adm_id_adm`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ; -- -- Extraindo dados da tabela `produto` -- INSERT INTO `produto` (`id_produtos`, `produto`, `descricao`, `valor`, `especie`, `img`, `principal`, `adm_id_adm`) VALUES (7, 'Lapis', 'Faber castel', 2.00, 'escritorio', 0x6172717569766f732f703734323536622e706e67, 'principal', NULL), (10, 'Estojo', 'sei la', 2.10, 'escritorio', 0x6172717569766f732f46616265722d43617374656c6c2d457475692d322d50656e732d42726f776e2d78696d6167652e706e67, 'principal', NULL); -- -------------------------------------------------------- -- -- Restrições para as tabelas dumpadas -- -- -- Restrições para a tabela `carrinho` -- ALTER TABLE `carrinho` ADD CONSTRAINT `fk_carrinho_cliente` FOREIGN KEY (`cliente_id_cliente`) REFERENCES `cliente` (`id_cliente`) ON DELETE NO ACTION ON UPDATE NO ACTION, ADD CONSTRAINT `fk_carrinho_produto1` FOREIGN KEY (`produto_id_produtos`) REFERENCES `produto` (`id_produtos`) ON DELETE NO ACTION ON UPDATE NO ACTION; -- -- Restrições para a tabela `produto` -- ALTER TABLE `produto` ADD CONSTRAINT `fk_produto_adm` FOREIGN KEY (`adm_id_adm`) REFERENCES `adm` (`id_adm`) ON DELETE NO ACTION ON UPDATE NO ACTION; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Dezembro 5, 2011 Bom não consegui visualizar erro de digitação agora mas tem pelo menos erro de tipos pois o campo é numerico e esta comparando com texto tire as aspas simples da consulta $sql="SELECT carrinho.*, produto.`id_produtos` AS produto, cliente.`id_cliente` AS cliente FROM `produto` AS carrinho INNER JOIN `produto` AS produto ON carrinho.`produto_id_produtos` = produto.`id_produtos` INNER JOIN `cliente` AS cliente ON carrinho.`cliente_id_cliente` = cliente.`id_cliente` WHERE (carrinho.`cliente_id_cliente` = ".$id_cliente." ) ORDER BY carrinho.`produto_id_produtos` ASC"; veja ai que erro ocorre ou se resolve ------------- Editado Tem um alias esquisito ali `produto` AS carrinho isso pode está dando problemas pois tem uma tabela com o mesmo nome mude pelo menos para outro alias antes Compartilhar este post Link para o post Compartilhar em outros sites
Moran 0 Denunciar post Postado Dezembro 5, 2011 Mario, continua me dando erro #1054 - Unknown column 'carrinho.cliente_id_cliente' in 'where clause' MArio abusando da sua bondade. Se fosse você que estivesse fazendo como você faria esse join Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Dezembro 5, 2011 Pelo que vi de sua estrutura faria assim Veja se vai agora $sql="SELECT carrinho.*, produto.`id_produtos`, cliente.`id_cliente` FROM (`carrinho` INNER JOIN `produto` ON carrinho.`produto_id_produtos` = produto.`id_produtos`) INNER JOIN `cliente` ON carrinho.`cliente_id_cliente` = cliente.`id_cliente` WHERE carrinho.`cliente_id_cliente` = ".$id_cliente." ORDER BY carrinho.`produto_id_produtos` ASC"; Compartilhar este post Link para o post Compartilhar em outros sites
Moran 0 Denunciar post Postado Dezembro 5, 2011 Pelo que vi de sua estrutura faria assim Veja se vai agora $sql="SELECT carrinho.*, produto.`id_produtos`, cliente.`id_cliente` FROM (`carrinho` INNER JOIN `produto` ON carrinho.`produto_id_produtos` = produto.`id_produtos`) INNER JOIN `cliente` ON carrinho.`cliente_id_cliente` = cliente.`id_cliente` WHERE carrinho.`cliente_id_cliente` = ".$id_cliente." ORDER BY carrinho.`produto_id_produtos` ASC"; show cara.. vou ver o teu codigo e ver o que errei.. Mais uma pergunta. com esse JOIN eu consigo usando o While, pegar todos os valores das colunas das 3 tabelas ?? Pelo que vi de sua estrutura faria assim Veja se vai agora $sql="SELECT carrinho.*, produto.`id_produtos`, cliente.`id_cliente` FROM (`carrinho` INNER JOIN `produto` ON carrinho.`produto_id_produtos` = produto.`id_produtos`) INNER JOIN `cliente` ON carrinho.`cliente_id_cliente` = cliente.`id_cliente` WHERE carrinho.`cliente_id_cliente` = ".$id_cliente." ORDER BY carrinho.`produto_id_produtos` ASC"; Mais uma pergunta. com esse JOIN eu consigo usando o While, pegar todos os valores das colunas das 3 tabelas ?? Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Dezembro 5, 2011 Não entendi sua pergunta mas corrigiu o problema anterior? Compartilhar este post Link para o post Compartilhar em outros sites
Moran 0 Denunciar post Postado Dezembro 5, 2011 Não entendi sua pergunta mas corrigiu o problema anterior? Corrigiu sim.. eu queri saber assim. nesse JOIN eu to acessando as seguintes informações id_carrinho | quantidade | sessão | cliente_id_cliente | produto_id_produtos | id_produtos | id_cliente | -------------------------------------------------------------------------------------------------------------------- Agora como eu faria para mostrar mais dados, como Nome do Cliente | VALOR | ?? Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Dezembro 5, 2011 Basta selecionar também na consulta Tudo o que você quiser basta adiciona na consulta Se forem todos os campos pode usar até o * Compartilhar este post Link para o post Compartilhar em outros sites
Armando Nogueira 0 Denunciar post Postado Dezembro 7, 2011 Bom dia, acabei lendo sua dúvida... achei interessante. Bom sugiro que você faça assim: SELECT cliente.id_cliente cliente.nome_cli carrinho.id_carrinho, carrinho.quantidade, carrinho.sessao, carrinho.cliente_id_cliente, carrinho.produto_id_produto, produto.valor FROM carrinho INNER JOIN produto ON (produto.id_produtos = carrinho.produto_id_produtos) INNER JOIN cliente ON (cliente.id_cliente = carrinho.cliente_id_cliente) WHERE carrinho.cliente_id_cliente = ".$id_cliente." ORDER BY carrinho.produto_id_produtos ASC; Bom sugiro você: 1 - Passar os campos que você deseja retornar na sua pesquisa. 2 - Tome cuidado com o INNER JOIN, pois ele pode não retornar o que você esta esperando, por isso, estude mais sobre INNER, LEFT e RIGHT JOIN, pois eles podem trazer resultados totalmente diferentes. 3 - Repare que no codigo acima, no INNER JOIN de produto e cliente, repare que coloquei logo após do ON. Isso significa que ele dará a prioridade para quem esta perto do ON e isso é a forma "correta", não que a forma que você fez não irá funcionar, pelo contrario; Mas desta forma que estou mostrando é o mais correto. Compartilhar este post Link para o post Compartilhar em outros sites