Mysql : Valeurs uniques pour une colonne donnée

Mysql : Valeurs uniques pour une colonne donnée - SQL/NoSQL - Programmation

Marsh Posté le 07-10-2005 à 11:25:00    

Hello
J'ai une table comportant :  
id
table2_id
table3_id
position
 
pour chaque table2_id, je veux des valeurs unique de table3_id et position. Du genre à ne pas avoir des lignes du genre :
(id, table2_id, table3_id, position) (x, 3, 2, 2) et (y, 3, 2, 2) ou (y, 3, 1, 2).  
En gros, je veux avoir des table3_id et position uniques pour chaque table2_id.  
C'est possible de vérifier cela directement par mysql au lieu de faire cela par programmation ?
 
Merci pour votre aide ! Soyez indulgent, je débute  :bounce:  :jap:

Reply

Marsh Posté le 07-10-2005 à 11:25:00   

Reply

Marsh Posté le 07-10-2005 à 11:27:38    

je dois etre con [:petrus75] parceque j ai pas compris la question(enfin j'espere)


Message édité par betsamee le 07-10-2005 à 11:28:41
Reply

Marsh Posté le 07-10-2005 à 11:40:52    

non, je me suis surement mal exprimé :
est-ce possible de régler mon problème directement en SQL ou je dois gérer le cas part le programme qui fera les requêtes sur la base ? Le but ce serait que la base vérifie que les valeurs introduites soient correcte pour éviter de le faire pour chaque programme utilisant cette base.

Reply

Marsh Posté le 07-10-2005 à 12:07:38    

Tu crées un index unique sur table2_id, table3_id, non ?

Reply

Marsh Posté le 07-10-2005 à 12:11:49    

Beegee a écrit :

Tu crées un index unique sur table2_id, table3_id, non ?


alors en fait j avais bien compris la question , qui est de ce fait totalement abusee [:pingouino]

Reply

Marsh Posté le 07-10-2005 à 12:14:25    

ah, je connais pas encore ça. Je vais jeter un coup d'oeil sur ces indexes uniques. Merci bien.

Reply

Marsh Posté le 07-10-2005 à 14:04:05    

non ! c'est pas comme ça.
si je mets sur table2_id, table3_id, je peux mettre 2 positions identiques. Si je rajoute position en primary key, ça ne marche pas non plus. En gros :  
id et table2_id sont multiples, table3_id et position sont unique mais UNIQUEMENT pour un table2_id donné !

Reply

Marsh Posté le 07-10-2005 à 14:52:48    

C'est pas clair ton histoire :D
 
Dis clairement quelles sont les contraintes d'unicité, en terme de couples / trios, et tu verras les index uniques à créer.
 
D'après ce que tu dis, il semblerait qu'il te faille un index sur les 3 ...

Reply

Marsh Posté le 07-10-2005 à 19:16:03    

voilà, j'ai la soluce. Si qqch cherche une fois, voilà un exemple :  
CREATE UNIQUE INDEX idx1 ON table (table2_id, table3_id)
CREATE UNIQUE INDEX idx2 ON table (table2_id, position)

Reply

Marsh Posté le 07-10-2005 à 19:33:52    

C'est pour ça que ta phrase "table3_id et position sont unique mais UNIQUEMENT pour un table2_id donné !" porte à confusion, car je pensais que tu voulais dire que le couple (table3_id, position) doit être unique pour un table2_id donné :)
 
La plupart des problèmes SQL sont résolus ... quand on énonce clairement le problème ;)

Reply

Marsh Posté le 07-10-2005 à 19:33:52   

Reply

Marsh Posté le 08-10-2005 à 12:00:01    

Beegee a écrit :


La plupart des problèmes SQL sont résolus ... quand on énonce clairement le problème ;)


 
oui, dans mon cas, j'avais de la difficulté à former ma question !
Un grand merci pour tous ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed