JonatasFn 0 Denunciar post Postado Setembro 27, 2008 Fala galera, eu uso PHP + MySQL e faço as operações básicas, só que agora cai em um probleminha. Tenho 3 tabelas que são: -produtores -produtores -produtores_produtos Já cadastrei os produtores e os produtos, agora preciso cadastrar 1 produtor para vários produtos e cadastrar em produtores_produtos. Só que nessa tabela produtores_produtos que campos devo colocar? Eu tenho os campos id, id_produtor, produto. Só que depois preciso imprimir na tela a lista de produtores com seus respectivos produtos. O problema agora é q não tenho o nome do produtor nesta tabela(e o correto era não ter tbm o nome do produto neh) e então preciso fazer uma outra consulta para através do id_produtor na tabela produtores_produtos pegar o nome do produtor na tabela produtores. Isto está certo? Como faço isso? Compartilhar este post Link para o post Compartilhar em outros sites
João Cagnoni2 0 Denunciar post Postado Setembro 27, 2008 Esses dias eu tava folheando a documentação do MySQL e li sobre algo parecido. Não sei se entendi bem seu problema, mas tente separar as consultas com ponto-e-vírgula. Exemplo: $consulta = mysql_query("SELECT * FROM produtos; SELECT * FROM clientes; SELECT * FROM qualquer_coisa;"); E assim vai... O resto é igual você está acostumado a usar. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Setembro 27, 2008 Opa... beleza Jonatas.. então cara, eu fiz algo parecido aqui. As tuas tabelas então são: "produtores", "produtos", e "produtores_produtos". A idéia que me pareceu correta, foi fazer um relacionamento. Colocando na tabela "produtores_produtos" os campos: "id_produtor"(esse aqui vai se repetir nessa tabela mesmo), "id_produto", e talvez um "id_de_registros_da_tabela". Ai no caso, você faria consultas na tabela "produtores_produtos", para mostrar todos os produtos de certo produtor, já que ficaria o seguinte no banco: produtor 1, produto 5 produtor 1, produto 7 produtor 1, produto 8 produtor 2, produto 5 produtor 2, produto 10 ... O relacionamento mesmo, para você só gravar ID's nessa tabela, é um INNER JOIN. "SELECT * FROM produtores_produtos INNER JOIN tabela ON campo = campo WHERE ..." Compartilhar este post Link para o post Compartilhar em outros sites
JonatasFn 0 Denunciar post Postado Setembro 28, 2008 Fala William, acho q você me entendeu certinhu. Eu tenho esta três tabelas e o q preciso fazer é exibir uma lista com os nomes dos produtores e seus respectivos produtos. Só q não tá funcionando. olha o que usei primeiro, tá exibindo o nome de todos os produtores mesmo quem não tem produto cadastrado e não exibe os produtos: $sql = "select * from produtores left join prod_produtos on produtores.id = prod_produtos.id order by produtores.id desc"; Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Setembro 29, 2008 Cara... eu tb não sou bom nisso, tô entrando nessa de JOIN agora.. mas veja.. acredito que a base da pesquisa tenha que ser a tabela que relaciona as duas. Ou pela nomeação que demos no começo do topico, a "produtores_produtos". Ficando: SELECT * FROM `produtores_produtos` .. Compartilhar este post Link para o post Compartilhar em outros sites
NaPraia 12 Denunciar post Postado Setembro 30, 2008 digamos que suas tabelas sejam assim create table produto ( id_produto number, nm_produto varchar(20)); create table produtor ( id_produtor number, nm_produtor varchar(20)); create table produto_produtor ( id_produto_produtor number, id_produto number, id_produtor number); teu select ficaria assim select a.id_produto, a.nm_produto, c.id_produtor, c.nm_produtor from produto a inner join produto_produtor b on (a.id_produto = b.id_produto) inner join produtor c on (b.id_produtor = c.id_produtor) Compartilhar este post Link para o post Compartilhar em outros sites
JonatasFn 0 Denunciar post Postado Setembro 30, 2008 Cara, foi muito esclarecedora sua resposta. Mas tem uma coisa q não entendi: select a.id_produto, a.nm_produto, c.id_produtor, c.nm_produtor o que são esses pontos "a.", "c." ????? Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Setembro 30, 2008 sao so nomes das tabelas so que como ele usou alias sao os alias (apelidos) das tabelas vou marcar onde foi definido os tres alias select a.id_produto, a.nm_produto, c.id_produtor, c.nm_produtor from produto a inner join produto_produtor b on (a.id_produto = b.id_produto) inner join produtor c on (b.id_produtor = c.id_produtor) se nao quiser usar alias pode fazer o mesmo sem eles, apenas usando os nomes das tabelas select produto.id_produto, produto.nm_produto, produtor.id_produtor, produtor.nm_produtor from produto inner join produto_produtor on (produto.id_produto = produto_produtor.id_produto) inner join produtor on (produto_produtor.id_produtor = produtor.id_produtor) Ficando a mesma coisa so que sem alias Compartilhar este post Link para o post Compartilhar em outros sites
JonatasFn 0 Denunciar post Postado Outubro 3, 2008 Deu certinhu. Mas agora eu tenho outra duvida: Agora preciso que o usuario edite um determinado registro por exemplo: preciso exibir tudo isso aí em cima mas só de um produtor. Como se eu tivesse que acrescentar a expressão: where id_produtor = $id_produtor; Como faço isso? Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Outubro 3, 2008 Mas é exatamente isso Voce precisa de uma pagina de edicao que seria parecida com a de inclusao e seleciona o registro que precisa e preenche os campos O que for alterado voce salva Compartilhar este post Link para o post Compartilhar em outros sites
JonatasFn 0 Denunciar post Postado Outubro 3, 2008 Tá, isto eu tenho eu quero saber como passar para pagina de edição, só o produtor fulano e seus respectivos produtos. Na expessão acima eu tô exibindo todos os produtores e seus respectivos produtos! Dá pra entender ou tá meio confusa a minha dúvida! Compartilhar este post Link para o post Compartilhar em outros sites
Lucas Renan 2 Denunciar post Postado Outubro 3, 2008 cria uma VIEW que soh faça join nos campos que você precisa para a consulta e resposta. aí fica rapidão =D Compartilhar este post Link para o post Compartilhar em outros sites
JonatasFn 0 Denunciar post Postado Outubro 3, 2008 Cara, valew msm pela ajuda... mas eu não manjo muito e não entendi o q você quis dizer. você pode me explicar, dar um exemplo? Compartilhar este post Link para o post Compartilhar em outros sites
JonatasFn 0 Denunciar post Postado Outubro 4, 2008 Alguém sabe como faço uma busca com inner join para apenas um registro? Estou usando a seguinte SQL: select produto.id_produto, produto.nm_produto, produtor.id_produtor, produtor.nm_produtor from produto inner join produto_produtor on (produto.id_produto = produto_produtor.id_produto) inner join produtor on (produto_produtor.id_produtor = produtor.id_produtor) Funciona exatamente como eu queria, só que agora estou fazendo uma pagina pra editar os dados, e esta expressão acima exibe todos os registros e só preciso exibir um determinado registro para poder editar. Como faço isto??? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Outubro 5, 2008 Não basta colocar um "WHERE `tal` = 'tal' "?? Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Outubro 5, 2008 Voce tem qeu indentificar o registro com um WHERE mesmo Compartilhar este post Link para o post Compartilhar em outros sites