Marcos Vinícius 0 Denunciar post Postado Agosto 29, 2006 E para deletar os dados? Estava tentando assim: $usuarios = $_POST["deletar"];if ($usuarios){ $auxsql = "DELETE users_subcateg.*, users_categ.*FROM ((users_subcateg INNER JOIN subcateg ON users_subcateg.subcateg_id = subcateg.subcateg_id) INNER JOIN new_users ON users_subcateg.users_id = new_users.users_id) INNER JOIN categoria ON subcateg.subcateg_id_categ = categoria.categ_id WHERE users_subcateg.users_id IN (".implode(",", $usuarios).")"; Retorna o seguinte erro: Not unique table/alias: 'users_categ' Imagino que seja porque tenho campos users_id e campo categ_id da tabela users_categ, que são ligados a mais de um campo subcateg_id assim: user1 > categ1 > subcateg1, subcateg2... user2 > categ1 > subcateg5, subcateg7... Então, não posso apagar o subcateg1 > categ1 do user 1, senão apago tudo que tiver ligado àquela categoria, certo? Se eu tiro o "users_categ.*" da primeira linha: $auxsql = "DELETE users_subcateg.* FROM... Ele apaga todos os campos daquele user, no subcateg e, claro, nenhum do categ. O que eu preciso mudar pra apagar somente a categoria com a subcategoria selecionada? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Agosto 29, 2006 O que eu preciso mudar pra apagar somente a categoria com a subcategoria selecionada? Depende pois se você apagar uma categoria, você precisa pagar todas as sub categorias relacionadas a ela e tbm apagar o que o usuario escolheu, seria melhor você usar um efeito cascata, mas só funciona com Mysql 5 Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Vinícius 0 Denunciar post Postado Agosto 29, 2006 Depende pois se você apagar uma categoria, você precisa pagar todas as sub categorias relacionadas a elae tbm apagar o que o usuario escolheu, seria melhor você usar um efeito cascata, mas só funciona com Mysql 5Pois é... mas a questão é que tenho que apagar a subcateg.Então, não posso apagar a categoria enquanto tiver uma sucateg vinculada a ela. Mas como vou saber se a subcateg que estou apagando é a última subcateg da categ ou ainda existem outras?Não acredito que seja através de SELECT (count) e IF's. Deve ter uma maneira mas fácil. ou não?? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Agosto 29, 2006 só apagar todas as sub categorias onde o id da categoria seja igual a id categoria que você quer apagar Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Vinícius 0 Denunciar post Postado Agosto 29, 2006 só apagar todas as sub categorias onde o id da categoria seja igual a id categoria que você quer apagarPois é, mas se o user escolhe só uma subcateg pra deletar, ficando outras daquela categoria, não dá pra apagar a categ ainda. Só quando a subcateg for a última escolhida. Eu acho que tem que ser alguma coisa assim.seleciona a categoria da subcateg escolhida na tabela categoria. (AQUI SEM PROBLEMA).verifica quantas subcateg dessa categ selecionada estão na tab users_subcateg. (AQUI COMPLICA. COMO FAÇO ESSA VERIFICAÇÃO?)O problema aqui é que essa tabela (users_subcateg) é de junção. Só tem os campos users_id e subcateg_id. Não tem campo categ_id. Será que vou ter que acrescentar este campo? Aí vai ficar fácil, mas correto?Se a subcateg for a última, deleta a categ da users_categ.Então, se for assim, a dúvida é fazer a comparação entre as tabelas pra ver se a subcateg, daquela categoria, é a última.você pode dar uma luz de como fazer isso? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Agosto 29, 2006 como falei se você usar o efeito cascata ira apagr tudo relacionado ao id categoria , mas da para fazer na mao tbm, se você quer apagar uma categoria sinal que tbm quer apagar as subcategoria claro. dai é simples se quer apagar a categoria, e apagar todas as sub categoria onde for igual a id categoria, e depois apagar na tabela de junção onde id categoria for igual como falei na mao tbm da mas fica mais facil e mais correto se usar o cascade, mas é claro se for mysql 5 e nao sei qual é sua versao do mysql Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Vinícius 0 Denunciar post Postado Agosto 29, 2006 como falei se você usar o efeito cascata ira apagr tudo relacionado ao id categoria , mas da para fazer na mao tbm, se você quer apagar uma categoria sinal que tbm quer apagar as subcategoria claro. dai é simples se quer apagar a categoria, e apagar todas as sub categoria onde for igual a id categoria, e depois apagar na tabela de junção onde id categoria for igual como falei na mao tbm da mas fica mais facil e mais correto se usar o cascade, mas é claro se for mysql 5 e nao sei qual é sua versao do mysql A versão do mysql do servidor é 4. alguma coisa. Acho que não fui claro. Na verdade não quero apagar a categoria nem a subcategoria. Só quero deletar a subcategoria escolhida pelo usuário e que fica gravada na tabela de junção users_subcateg. O problema é qdo for deletar a última subcategoria de uma determinada categoria, tenho que deletar a categoria da tabela de junção users_categ também. Tudo isso, mantendo as categorias e subcategorias nas suas tabelas originais. Tenho que deletar apenas nas tabelas de junção com o usuário. Usando teu exemplo (e aumentando uma "escolha"), seria assim: Usuario Fabyo torce em São Paulo para o Sao Paulo Usuario Fabyo torce em Rio de Janeiro para Flamengo e Fluminense Usuario Adailton torce em São Paulo para o Sao Paulo Usuario Adailton torce em Rio de Janeiro para Flamengo Fabyo descobre que torcer no Rio para Flamengo e Fluminense não dá certo, então decide apagar Fluminense: (Aqui tenho que apagar Fluminense mas não Rio de Janeiro.) Usuario Fabyo torce em São Paulo para o Sao Paulo Usuario Fabyo torce em Rio de Janeiro para Flamengo Usuario Adailton torce em São Paulo para o Sao Paulo Usuario Adailton torce em Rio de Janeiro para Flamengo Fabyo fica p. com Flamengo e não quer mais torcer pra nenhum time do Rio: (Já aqui tenho que apagar Flamengo e Rio de Janeiro, mas não posso apagar Flamengo, nem Fluminense, nem Rio de Janeiro de suas próprias tabelas pois tem outros usuários que torcem pra esses times, ou vão torcer. Se não apagar Rio de Janeiro vai ficar:) Usuario Fabyo torce em São Paulo para o Sao Paulo Usuario Fabyo torce em Rio de Janeiro para Usuario Adailton torce em São Paulo para o Sao Paulo Usuario Adailton torce em Rio de Janeiro para Flamengo Tentei fazer um delete do tipo: "DELETE users_subcateg, users_categ FROM users_subcateg, users_categ WHERE subcateg_id = $apagar";Mas claro não deu certo pois apagou todos os registros de users_categ, inclusive de outros usuários. Então, tenho que passar um parâmetro pro users_categ mas não imagino qual. Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Vinícius 0 Denunciar post Postado Agosto 29, 2006 Pelo que eu entendi dos testes que eu fiz, acho que a questão tá na modelagem das tabelas. A tabela de junção users_categ não precisa, pois subcateg já está ligado a categoria.Então ficou assim:tab categoriatab subcategoriatab userstab users_subcategVou testar mais um pouco mas parece que assim tá funcionando. Compartilhar este post Link para o post Compartilhar em outros sites
andreymor 0 Denunciar post Postado Setembro 9, 2006 Fabyo......uma pergunta.......primeiramente, desculpe-me, pois nao pude ler o POST todo......mas ai vai a pergunta:Se eu tenho uma tabela nomeada SEGURO, com id e outros campos.Tenho uma tabela DADOS PESSOAIS relacionada a SEGURO, e outras duas, DADOS CONJUGE e DADOS BANCARIOS, todas relacionadas à tabela SEGURO....Qual seria a melhor maneira de JUNTAR essas tabelas? criando uma tabela intermediária, que grava o id de cada uma, relacionando ao do SEGURO, ou uma FK em cada uma das tabelas filhas, relacionadas ao ID da SEGURO???e outra dúvida:ao inserir um novo dado, há como inserir automaticamente o valor de cada id relacionado ao FK, ou preciso inserir o id da SEGURO em cada tabela????assim:ao inserir um seguro, gravo tudo junto, os dados pessoais, conjuge e bancarios, tudo de uma única vez.......mas pra gravar, preciso inserir o ID desse formulario em cada tabela???Grato pela atenção Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Setembro 10, 2006 nao sei o que você ta fazendo mas essas tabelas: DADOS PESSOAIS, DADOS CONJUGE e DADOS BANCARIOS poderia ser uma tabela só dai você relacionaria só o seguro com um fk Compartilhar este post Link para o post Compartilhar em outros sites
andreymor 0 Denunciar post Postado Setembro 10, 2006 certo......mas os dados são muitos, isso nao atrapalha???se for colocar tudo junto, gera cerca de 90 campos.......não é muito pra uma única tabela???E continuando........caso eu gere uma unica tabela para elas......e crie um FK do seguro.....como eu gero isso?ou seja, na gravação, eu gravo o id do seguro nas duas? ou é automatico...... Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Setembro 10, 2006 sobre muitos campos é relativo, porque uma tabela tem que ter dados referente a ela, se todos os dados sao dela nao tem problema, por exemplo uma tabela de funcionarios pode ter nome, end, documentos, escolaridade etc... só que tudo é reverente ao funcionario dai fica junto, eu por exemplo tenho uma tabela de funcionarios com 40 campos, eu nao vou separar só porque tem muitos campos, eu devo separar quando os dados nao sao reverentes ao funcionario, regras FN e na gravação pode ser automatico depende da sua programação pra isso Compartilhar este post Link para o post Compartilhar em outros sites
andreymor 0 Denunciar post Postado Setembro 11, 2006 OK, muito grato pela sua ajuda Fabyo......Valeu! Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Vinicius Albuquerque 0 Denunciar post Postado Setembro 20, 2006 Caras esse tutorial salvou a minha vida.. valeu.. obrigado mesmo...! Compartilhar este post Link para o post Compartilhar em outros sites
augustoliveira 0 Denunciar post Postado Outubro 2, 2006 Gostaria de saber como se dá um select para mostrar um único torcedor com vários times por ex. Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Outubro 2, 2006 da sim Compartilhar este post Link para o post Compartilhar em outros sites
QuaseNada 0 Denunciar post Postado Janeiro 9, 2007 Gente, eu sou novo em MySql, porém ja fiz algumas coisinhas em SQL Server, e pelo que eu sei, o INNER JOIN serve apenas para consulta SQL, não é?Para fazer um relacionamento temos que usar o REFERENCES, certo?Ou o REFERENCES não funciona em MySql?Por Exemplo: alter table pedidos add foreign key (cod_cliente) references clientes(codigo);Não seria isso para relacionar as tabelas? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 9, 2007 voce esta confundindo tudo, sintaxe SQL é basicamente igual em qualquer banco nao importa se é Mysql ou SQL Server vai funcionar , e para fazer consultas relacionadas pode usar o inner join mesmo Compartilhar este post Link para o post Compartilhar em outros sites
QuaseNada 0 Denunciar post Postado Janeiro 9, 2007 Então, é isso que eu disse, esse tutorial é pra fazer as consultas de tabelas relacionadas, não para fazer o relacionamento em sí, não é? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 10, 2007 esse tutorial é para fazer as consultas relacionadas e nao para criar as tabelas Compartilhar este post Link para o post Compartilhar em outros sites