Requete SQL _ idref, id

kattig
Invité n'ayant pas de compte PHPfrance

09 oct. 2009, 10:42

Bonjour,

Je ne sais pas si je suis sur le bon forum mais.. je me lance:

Je vous explique déjà le contexte:

On a deux tables:

Maitre Chien
___________________________ _____________________________
|idmaitre|nom | age | .... | |idchien | Nom | .... | aUnProprio|
T-----------------------------------| |-----------------------------------------|

Et on a une table de liaison :

Map
_________________
|idchien |idmaitre|
-----------------------

Ce que j'aimerais faire, c'est modifié le champ "aUnProprio" de la table "chien" en fonction de la table Map sachant que:
- Je ne connais que idmaitre
- plusieurs chiens peuvent avoir un même maitre...

J'ai fais plusieurs tests comme:
Update chien
Set aUnProprio = 1
From chien
INNER Join map On map.idchien = chien.id chien

Cependant, je me rend compte que ce n'est pas ca...
Si vous avez une idée, ce serait gentille à vous de me le faire part...

kattig
Invité n'ayant pas de compte PHPfrance

09 oct. 2009, 10:45

Je me suis rendue compte que les deux tables étaient invisibles, les voici:

maitre
________________________
|idmaitre|nom | age | .... |

chien
______________________________
|idchien | Nom | .... | aUnProprio|

Voila!

kattig
Invité n'ayant pas de compte PHPfrance

09 oct. 2009, 11:19

Re-bonjour,

J'ai trouvé la solution! Grâce à un exemple d'un livre, cela m'a donné la solution:

Update chien
Set aUnProprio = 1
WHERE idchien = (SELECT idchien from map where idmaitre = @idmaitre)

Voila! Cela me parait évident à présent...

katig
Invité n'ayant pas de compte PHPfrance

09 oct. 2009, 11:37

Heu....

Je me suis un peu trop précipitée pour dire que c'est résolu... Car, il ne prend qu'une seule valeur...

Code : Tout sélectionner

WHERE idchien = (SELECT idchien from map where idmaitre = @idmaitre)
Alors que je voudrais faire en sorte que cela update toutes les lignes dans la condition est vérifiée...

De l'aide?

kattig
Invité n'ayant pas de compte PHPfrance

09 oct. 2009, 11:50

Cette fois c'est réellement résolu.. Il fallait mettre "IN" au lieu de "="...

A+

PS: J'ai l'impression de faire un monologue là...

Eléphant du PHP | 254 Messages

09 oct. 2009, 13:44

Salut,

C'est vrai que t'as été rapide la :wink: