Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

yetiH

dois campos únicos

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

 

http://dev.mysql.com/doc/refman/5.0/en/replace.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

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/

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.