cassianooliver Postado Janeiro 14, 2009 Denunciar Share Postado Janeiro 14, 2009 Olá pessoal, to com uma dificuldade em relacionar 3 tabelas...promocoesidnomepromocoes_cadastroidpid // id da promoçãonomeemailpromocoes_ganhadoresidcid // id do cadastradopid // id da promoçãodúvida:como selecionar os dados do ganhador de uma determinada promoção? Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Janeiro 14, 2009 Denunciar Share Postado Janeiro 14, 2009 SELECT pc.nome,pc.email,p.nome FROM promocoes_ganhadores pg LEFT JOIN promocoes_cadastro pc ON pc.id = pg.cid LEFT JOIN promocoes p ON p.id = pg.pid WHERE pg.pid = 'ID DA PROMOÇÃO'Acho que isso deve estar correto...Movendo PHP » MySQL. Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Janeiro 14, 2009 Denunciar Share Postado Janeiro 14, 2009 Oi, cassianooliver!SELECT pc.nome,pc.email,p.nome FROM promocoes_ganhadores pg LEFT JOIN promocoes_cadastro pc ON pc.id = pg.cid LEFT JOIN promocoes p ON p.id = pg.pid WHERE pg.pid = 'ID DA PROMOÇÃO' Acho que isso deve estar correto... Movendo PHP » MySQL. O mais correto será usar o INNER JOIN em vez do LEFT JOIN informado pelo ESerra. Se você usar o LEFT JOIN, e houver inconsistência em seu arquivo ele trará os registros inconsistentes. Com INNER JOIN somente os registros consistentes virão. Um outro ponto a analisar é a performance da consulta apresentada através da ordem em que as tabelas foram selecionadas. Pode parecer inexpressivo o tempo de retorno desta consulta se a quantidade de registros em promocoes_ganhadores for pequena. Mas, se for grande, então você deve modificar sua consulta para que pegue primeiro a tabela promocoes, depois a tabela promocoes_ganhadores e, por último, a tabela promocoes_cadastro. Você deve informar ao MySQL que a consulta se dará da esquerda para a direita, usando a cláusula STRAIGHT_JOIN. Então, sua consulta ficaria assim:SELECT STRAIGHT_JOIN pc.nome, pc.email, p.nome FROM promocoes p INNER JOIN promocoes_ganhadores pg ON pg.pid = p.id INNER JOIN promocoes_cadastro pc ON pc.id = pg.cid WHERE pg.pid = 'ID DA PROMOÇÃO' Link para o comentário Compartilhar em outros sites More sharing options...
0 cassianooliver Postado Janeiro 14, 2009 Autor Denunciar Share Postado Janeiro 14, 2009 a sql devo usar como colocaram aí acima?o que seria pc? pg?só abreviaram ou uso assim mesmo?outra dúvida...no mysql_fetch_array, como retornar o nome do ganhador?obrigado pela atenção.. Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Janeiro 15, 2009 Denunciar Share Postado Janeiro 15, 2009 a sql devo usar como colocaram aí acima?o que seria pc? pg?só abreviaram ou uso assim mesmo?outra dúvida...no mysql_fetch_array, como retornar o nome do ganhador?obrigado pela atenção..Respondendo1 = sim2 = é uma abrevi~ção para evitar escrever o nome todo da tabela.3 = Não sei. Não entendo de PHP. Apenas sei que o nome do ganhador será informado através do atributo pc.nome. O email virá través do atributo pc.email e o nome da promoção través dio atributo p.nome. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
cassianooliver
Olá pessoal, to com uma dificuldade em relacionar 3 tabelas...
promocoes
id
nome
promocoes_cadastro
id
pid // id da promoção
nome
email
promocoes_ganhadores
id
cid // id do cadastrado
pid // id da promoção
dúvida:
como selecionar os dados do ganhador de uma determinada promoção?
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados