2014-07-07 7 views
0

J'ai deux tables MYSQL cases et pivotINSERT MYSQL, UPDATE SUPPRIMER

cases ressemble à ceci:

Idgame Id 
    1  2 
    1  1 
    1  5 
    1  3 
    1  1 
    1  6 
    ... ... 
    1  2 

pivot ressemble à ceci:

Idgame Id Icone 
    1  1  7 
    1  2  14 
    1  3  15 
    1  5  6 
    1  6  1 

Tout Id dans pivot doit être l'identifiant distinct de cases

Les utilisateurs peuvent modifier l'ID dans cases, donc quand il y a un changement que je veux mettre à jour pivot.

1) S'il y a un nouvel identifiant pas encore pivot Je veux ajouter une nouvelle ligne à pivot avec Icone = 1 (je mets 1 comme valeur par défaut)

2) Si une pièce d'identité ne sont plus dans cases Je veux les supprimer dans pivot

3) Je ne change rien dans pivot si l'identifiant est toujours en cases

Je suis en train de le faire avec REPLACE INTO ou INSERT Duplicate KEY mais je n'arrive pas à le faire ...

J'ai essayé quelque chose comme ci-dessous. Il fonctionne presque mais il n'effectue pas de suppression (point 2): J'ai ajouté PRIMARY KEY sur les 3 colonnes (id, idgame et icone) dans pivot.

REPLACE INTO `pivot` (id,idgame,icone) 
SELECT DISTINCT cases.id, cases.idgame, pivot.icone 
FROM `cases` 
LEFT JOIN pivot ON (pivot.Idgame = cases.Idgame AND pivot.id = cases.id) 
WHERE cases.Idgame = 1 

Est-il possible de le faire avec une seule requête?

Répondre