Bonjour,
Je présume donc que dans ta table Risque, tu as un champ pour faire la liaison avec ta table Domaine.
Personnelement, je fairais une jointure gauche depuis la table domaine sur la table risque (si je suis pas clair :
FROM domaine AS D LEFT OUTER JOIN risque AS R ON D.idDomaine = R.id_domaine
(à voir en fonction de tes noms de champ)
pour récuperer l'identifiant maximum correspondant. Vu que un risque correspond à un seul domaine, et qu'un domaine peut avoir plusieurs risques.
Ainsi, en précisant l'id_domaine dans la clause where, tu obtiendra tous les risques correspondant au domaine. Avec un MAX(id_domaine) dans le select, tu prend le plus élevé. Il te suffit d'incrémenter cette valeur et de tant servir pour insérer la nouvelle ligne. (Bien sur, si le select ne retourne aucune ligne, la valeur sera 1)
EDIT : Ton champ de peut pas être auto incrémenté directement dans la base par conséquent, et ne peux pas être une clé primaire vu que des nombres se répetent
Cela pourrait donner une requête du genre :
1 2 3
| SELECT MAX(R.id_risque)
FROM domaine AS D LEFT OUTER JOIN risque AS R ON D.idDomaine = R.id_domaine
WHERE D.idDomaine = 'laValeurDuDomaine' |
Cela te parrait clair?
Après, il y a peut être des méthodes plus simple, mais personnelement je ferai comme ça :p
Partager