LHR 0 Denunciar post Postado Janeiro 11, 2007 Pessoal, estou tendo o seguinte problema para conseguir fazer esse JOIN no MySQL.eu possuo 1 tabela com alguns campos, tais como: emitente, cliente, data, produto1, produto2, produto3, obs...mas nos campos Cliente, Produto1, Produto2...eles são apenas os codigos que estão em outra tabela...assim:Emitente: LeonardoCliente: 12Data: 11/01/07Produto1: 09Produto2: 02Produto3: 17entao eu precisava pegar o nome desses produtos que ficam na tabela Aparelhos.entao eu tentei usar esse JOIN que ficou:select usuario.nome, pedido.emitente, pedido.data_emissao, pedido.hora, aparelho.nome FROM pedido left join usuario on (usuario.id=pedido.cliente) left join aparelho on (aparelho.id=pedido.produto1)mas eu nao consigo colocar tambem os campos: produto2 e produto3 que ficam na mesma tabela. Tentei usar AND, OR e talz, mas nao funciona legal...oq eu tenho de por depois do: (aparelho.id=pedido.produto1), para por os outros tambem?obrigado desde jaabraço Compartilhar este post Link para o post Compartilhar em outros sites
cassitos 2 Denunciar post Postado Janeiro 11, 2007 Você pode tentar umas destas duas formas tbm: SELECT *FROM pedido ALEFT JOIN produto B ON ((A.PRODUTO1 = B.ID OR A.PRODUTO2 = B.ID OR A.PRODUTO3 = B.ID))Retorna cada produto em uma linha.SELECT A.*, P1.NOME, P2.NOME, P3.NOMEFROM pedido ALEFT JOIN produto P1 ON A.PRODUTO1 = P1.IDLEFT JOIN produto P2 ON A.PRODUTO2 = P2.IDLEFT JOIN produto P3 ON A.PRODUTO3 = P3.IDRetorna todos os produtos em uma linha, diferenciados pelos campos.O nome das tabelas que utilizei são de exemplo apenas.Qquer prob. fala ae. Compartilhar este post Link para o post Compartilhar em outros sites
LHR 0 Denunciar post Postado Janeiro 11, 2007 afffffffffffffvelho...eu te amooooooooooputzzz...tentei esse seu segundo metodo e adicionei uma outra tabela e aparentemente esta funcionando tudo OK...fico assim ó:SELECT usuario.nome, pedido.emitente, P1.NOME, P2.NOME, P3.NOMEFROM pedidoLEFT JOIN aparelho P1 ON pedido.PRODUTO1 = P1.IDLEFT JOIN aparelho P2 ON pedido.PRODUTO2 = P2.IDLEFT JOIN aparelho P3 ON pedido.PRODUTO3 = P3.IDLEFT JOIN usuario on usuario.id=pedido.clienteeu nunca q ia fazer isso O_Otem como tu explicar isso pra mim??? pq eu nao entendi nadinhaaaa disso ahuahuhauahuahuuhavlwzão velho xDabraço, té mais ; ) Compartilhar este post Link para o post Compartilhar em outros sites
LHR 0 Denunciar post Postado Janeiro 11, 2007 ixi...velho, agora o problema é no PHP...no MySQL ta funcionando certinho mesmo, mas como q faço agora pra pegar os nomes no PHP? estou usando a seguinte consulta:$busca = "SELECT usuario.nome, pedido.emitente, P1.NOME, P2.NOME, P3.NOME FROM pedidoLEFT JOIN aparelho P1 ON pedido.PRODUTO1 = P1.IDLEFT JOIN aparelho P2 ON pedido.PRODUTO2 = P2.IDLEFT JOIN aparelho P3 ON pedido.PRODUTO3 = P3.IDLEFT JOIN usuario on usuario.id=pedido.cliente WHERE usuario.nome='$cliente'";$resultado_busca = mysql_query($busca);While ($registro = mysql_fetch_assoc($resultado_busca)){echo $registro["emitente"]echo $registro["nome"] //aqui ele pega o clienteecho $registro["NOME"] //ae aqui ele pega o valor do ULTIMO PRODUTOcomo eu faria pra mostrar os 3 produtos???vlw mais um vez...té mais Compartilhar este post Link para o post Compartilhar em outros sites
cassitos 2 Denunciar post Postado Janeiro 11, 2007 Opa, vou responder rapidão bem resumido, dps explico com calma a query ae beleza? cria um alias diferenciado para os campos com o mesmo nome, tipo: $busca = "SELECT usuario.nome, pedido.emitente, P1.NOME AS NOME1, P2.NOME AS NOME2, P3.NOME AS NOME3 FROM pedido LEFT JOIN aparelho P1 ON pedido.PRODUTO1 = P1.ID LEFT JOIN aparelho P2 ON pedido.PRODUTO2 = P2.ID LEFT JOIN aparelho P3 ON pedido.PRODUTO3 = P3.ID LEFT JOIN usuario on usuario.id=pedido.cliente WHERE usuario.nome='$cliente'"; Bom, como cada produto está em diferentes campos facaria assim: echo $registro["NOME1] //ae aqui ele pega o valor do ULTIMO PRODUTO echo $registro["NOME2] //ae aqui ele pega o valor do ULTIMO PRODUTO echo $registro["NOME3] //ae aqui ele pega o valor do ULTIMO PRODUTO flw Compartilhar este post Link para o post Compartilhar em outros sites
LHR 0 Denunciar post Postado Janeiro 11, 2007 afffffffffffffffffffffff dinovoputzzzz...fantastico ahuahuhauuhahuaperfeito cara...vlw dinovoe uma hora q tu tiver tempo mesmo, tu me explica...abraço velhoté mais Compartilhar este post Link para o post Compartilhar em outros sites
cassitos 2 Denunciar post Postado Janeiro 12, 2007 afffffffffffff velho...eu te amoooooooooo putzzz...tentei esse seu segundo metodo e adicionei uma outra tabela e aparentemente esta funcionando tudo OK...fico assim ó: SELECT usuario.nome, pedido.emitente, P1.NOME, P2.NOME, P3.NOME FROM pedido LEFT JOIN aparelho P1 ON pedido.PRODUTO1 = P1.ID LEFT JOIN aparelho P2 ON pedido.PRODUTO2 = P2.ID LEFT JOIN aparelho P3 ON pedido.PRODUTO3 = P3.ID LEFT JOIN usuario on usuario.id=pedido.cliente eu nunca q ia fazer isso O_O tem como tu explicar isso pra mim??? pq eu nao entendi nadinhaaaa disso ahuahuhauahuahuuha vlwzão velho xD abraço, té mais ; ) Bom, como a estrutura da tabela utilizada contém mais de um campo com "referência" a mesma tabela, no caso o produto, uma forma de você conseguir a informação destes produtos é "ligando" estes campos à tabela.Utilizei o LEFT JOIN para que o registro da tabela da esquerda (neste caso "pedido") seja exibido mesmo que não exista o produto na referência. E como podem ser vários produtos (uma coluna para cada na tabela pedido), você pode utilizar um Join para fazer associação dos campos para uma mesma tabela: LEFT JOIN aparelho P1 ON pedido.PRODUTO1 = P1.ID LEFT JOIN aparelho P2 ON pedido.PRODUTO2 = P2.ID LEFT JOIN aparelho P3 ON pedido.PRODUTO3 = P3.ID Esse P1, P2, P3 foi só um "alias" (apelido) p/ facilitar na identificação de cada produto. http://forum.imasters.com.br/public/style_emoticons/default/shifty.gif ehehe acho que confundi mais, se pintar dúvida fala ae. flw Compartilhar este post Link para o post Compartilhar em outros sites
LHR 0 Denunciar post Postado Janeiro 15, 2007 hauhuauhauha, q nada cara...ajudo bastante!é q eu nem sabia da existencia dessa função de por: aparelho "espaço" P1, etc.uhahuahuauha, mas é isso ae, vivendo e aprendendo! =Dabraçao ae cara, e té mais ; ) Compartilhar este post Link para o post Compartilhar em outros sites