Aureo Almeida 0 Denunciar post Postado Julho 17, 2019 Estou desenvolvendo uma consulta num BD do MYSQL, em que consegui sem problemas listar as características de produtos armazenadas numa tabela com chave estrangeira da tabela produtos. Porém, não estou conseguindo incluir neste Select uma terceira tabela. O SQL da consulta entre duas tabelas que está funcionado é o seguinte: SELECT psd_produtos.prd_id, psd_produtos.prd_codigo, psd_produtos.ctg_id, psd_produtos.sct_id, psd_produtos.prd_nome, psd_produtos.prd_detalhe, psd_produtos.prd_descricao, psd_produtos.prd_valor, psd_produtos.prd_foto1, psd_produtos.prd_foto2, psd_produtos.prd_foto3, psd_produtos.prd_condicoes, psd_produtos.prd_itens, psd_produtos.prd_estoque, psd_produtos.prd_tmpespera, psd_cores.crs_id, psd_cores.prd_id, psd_cores.crs_cores, psd_cores.crs_quantidade FROM psd_produtos RIGHT OUTER JOIN psd_cores ON psd_produtos.prd_id = psd_cores.prd_id WHERE (psd_produtos.prd_id = '5') Não estou conseguindo adicionar a terceira tabela, que assim como a segunda, do código acima, tem como chave estrangeira o campo psd_produtos.prd_id. Como adiciono a terceira tabela, que também terá como clausula where o valor que for atribuído ao campo psd_produtos.prd_id através de uma variável do PHP, que no exemplo acima está com um valor de teste? A tabela e seus campos que desejo inserir são os seguintes: Tabela: psd_sabores, Campos psd_sabores.sbr_id, psd_sabores.prd_id, psd_sabores.sbr_sabor, psd_sabores.sbr_quantidade, Fiz vários testes e em todos eles não consegui meu objetivo, que é fazer uma select em que quando um determinado produto for selecionado (na clausula where), seja feita uma consulta em duas tabelas que guardam características indeterminadas e diferentes dele e traga o resultado para ser usado numa página. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 17, 2019 Não sei se entendi o problema : para acrescentar mais "jons" faça FROM psd_produtos RIGHT OUTER JOIN psd_cores ON psd_produtos.prd_id = psd_cores.prd_id psd_produtos RIGHT OUTER JOIN xoto on ... psd_cores RIGHT OUTER JOIN xpto2 on ... Citar Não estou conseguindo adicionar a terceira tabela qual o erro/problema ? Compartilhar este post Link para o post Compartilhar em outros sites
Aureo Almeida 0 Denunciar post Postado Julho 22, 2019 Ocorre que me retorna a informação de "Erro na execução do comando SQL" no SQL Builder do Scriptcase, onde faço testes de códigos SQL: Seguindo tua sugestão de adicionar outros RIGHT OUTER JOIN, o código ficaria assim, postando somente a ultima parte do SQL com a adição da tabela : psd_cores.crs_id, psd_cores.prd_id, psd_cores.crs_cores, psd_cores.crs_quantidade psd_sabores.crs_id, psd_sabores.prd_id, psd_sabores.crs_cores, psd_sabores.crs_quantidade FROM psd_produtos RIGHT OUTER JOIN psd_cores ON psd_produtos.prd_id = psd_cores.prd_id psd_produtos RIGHT OUTER JOIN psd_sabores ON psd_produtos.prd_id = psd_sabores.prd_id WHERE (psd_produtos.prd_id = '5') Essa solução eu havia tentando e retornado a referida mensagem de erro. Compartilhar este post Link para o post Compartilhar em outros sites
Felipe Guedes Coutinho 0 Denunciar post Postado Julho 24, 2019 Aureo Almeida Eu não sei o seu intuido em usar o comando "RIGHT OUTER JOIN", mas eu acredito que para o que você queira fazer o comando "INNER JOIN" deva funcionar muito mais fácil. Então o seu comando SQL deve ficar como abaixo: SELECT A.prd_id ,A.prd_codigo ,A.ctg_id ,A.sct_id ,A.prd_nome ,A.prd_detalhe ,A.prd_descricao ,A.prd_valor ,A.prd_foto1 ,A.prd_foto2 ,A.prd_foto3 ,A.prd_condicoes ,A.prd_itens ,A.prd_estoque ,A.prd_tmpespera ,B.crs_id ,B.prd_id ,B.crs_cores ,B.crs_quantidade ,C.sbr_id ,C.prd_id ,C.sbr_sabor ,C.sbr_quantidade FROM psd_produtos A INNER JOIN psd_cores B INNER JOIN psd_sabores C WHERE A.PRD_ID = B.PRD_ID AND B.PRD_ID = C.PRD_ID AND A.PRD_ID = ".$_POST['codigo'] -- se for via POST --ou --AND A.PRD_ID = ".$_GET['codigo'] -- se for via GET --ou para o seu teste coloque o valor desejado --AND A.PRD_ID = '5' ! LEMBRANDO QUE, na sua dúvida você colocou no seu WHERE o comando abaixo: (psd_produtos.prd_id = '5') Não sei como você especificou no seu BANCO DE DADOS, mas se o seu campo PRD_ID for um númerico você deve colocar apenas 5 sem as aspas simples ( ' ), no código que lhe apresento acima, estou pegando o valor digitado no campo INPUT TYPE="TEXT" que tem o name CODIGO e já colocando dentro da claúsula WHERE, se o seu campo for do tipo (VARCHAR; CHAR, etc...) então você precisa colocar aspas simples, depois aspas dupla e um ponto no começo e depois inverter no final colocando um ponto, depois aspas dupla e por ultimo aspas simples ficando deste jeito --> caso POST '".$_POST['NomeDoSeuTextBox']."'; caso GET '".$_GET['NomeDoSeuTextBox']."'; caso contrário você pode usar o comando que mandei mesmo. Eu declarei para os nomes das tabelas com os valores "A", "B" e "C", mas você pode usar qualquer outro nome, PRODUTO no lugar do A, CORES no lugar do B e SABORES no lugar do C, não esquecendo de trocar todos para o mesmo nome, vou deixar marcado com cores diferentes caso você queira renomear. Espero ter ajudado. Att. Felipe Coutinho Compartilhar este post Link para o post Compartilhar em outros sites