Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal é o seguinte:Tenho uma tabela de produtos, uma tabela de segmentos e uma tabela de relacionamento dessas duas.Onde, produto ID 01 pertence ao segmento ID 02, e assim por diante, acho que vcs me entendem.O problema é que do modo que está, pode haver duplicidade de relacionamentos, acontece de ser cadastrado vários relacionamentos do produto ID 01 com o segmento ID 02 por exemplo. Sendo que só poderia existir um.Acredito que não tem como criar campos únicos pra esse caso, pois só se os dois campos coincidirem é que haverá a repetição.Eu posso fazer isso na minha linguagem de programação (PHP), mas eu quero fazer em SQL.Alguém tem idéia?vlw
Não, minha dúvida é na hora da inserção não deixar inserir valores repetidos.
Verificar se já possuo um registro igual ao que se está tentando inserir, mas isso via SQL e não PHP digamos.
Não posso fazer chaves primárias ou únicas porque os registros só serão iguais se as duas colunas forem iguais, é aí que está minha dúvida.
Por exemplo:
----------------
PRODUTOS
----------------
-|-ID-|-NOME-
-| 12 | Produto 12
-| 15 | Produto 15
----------------
SEGMENTOS
----------------
-|-ID-|-NOME-
-| 7 | Segmento 7
-| 10 | Segmento 10
----------------
RELACIONAMENTO ENTRE PRODUTOS E SEGMENTOS
----------------
-|-IDPROD-|-IDSEG-
-| 12 | 7
-| 15 | 7
-| 12 | 10
-| 12 | 10
-| 12 | 10
os que estão em negrito estão repetidos, é isso que eu não quero que aconteça!
Você pode colocar os 2 campos como UNIQUE sim.
Faça isso, e quando tentar inserir os 2 valores iguais, o MySQL retornará o erro nº 1062.
Basta você usar a função mysql_errno() (contida na lib MySQL no PHP),
e verificar se esse número foi retornado. Se foi retornado, é que houve tentativa de duplicação.
http://br2.php.net/mysql-errno
Há também o comando REPLACE, se você não conhece, ele faz a exclusão do existente na tabela, e adiciona o novo.
Ou seja, ele não deixa duplicar, pois ele elimina um existente para inserir o novo.
putz cara! muito show!muita falha minha em não testar isso! mas eu tinha na minha cabeça que iria tornar cada coluna única, e não dava pra fazer as duas juntas!valeu!! matou o que eu tava precisando!o/
não entendi muito bem sua dúvida.. eh isso q você precisa?
SELECT a.produto, b.segmentoFROM produto aINNER JOIN segmento b ON a.seg = b.segINNER JOIN relacionamento c ON b.seg = c.seg AND c.produto = a.produtoWHERE b.seg = xxx