Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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'
-------------------------------------------------------------------------------------------------------------------
>
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?
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'
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
Mario, mudou o erro..
#1054 - Unknown column 'carrinho.cliente_id_cliente' in 'where clause'
se alguem puder me ajudar, agradeceira muito.
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
>
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 */;onde foi criada a tabela carrinho?
só vi um ALTER TABLE carrinho
>
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 */;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
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
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";>
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 ??
Não entendi sua pergunta mas corrigiu o problema anterior?
>
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 | ??
Basta selecionar também na consulta
Tudo o que você quiser basta adiciona na consulta
Se forem todos os campos pode usar até o *
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.
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