Bonsoir tout le monde !
Je m'adresse à vous car je butte sur une requête SQL costaud que je dois placer. Je précise que cette requête ne concerne qu'un espace administrateur, par conséquent elle n'est pas publique et sert de mise à jour, si on veut, à exécuter périodiquement.
Voici deux tables.
Table 1 : `a_6-monnaie`
Table 2 : `b_6-monnaie`
Dans la première, plus de 20.000 lignes d'enregistrement, elle est figée, c'est typiquement une base de donnée fixe.
Elle présente une ID fixe et unique, incrémenté, la ID_Monnaie.
La deuxième est un peu plus complexe. Pour chaque membre inscrit, son lot de lignes, correspondant à la table 1. Vous l'aurez compris, il peut y avoir au maximum autant d'enregistrement que dans la table 1 x le nombre d'utilisateurs. Ceci peut donner une BDD plutot conséquente.
Lors d'enregistrements, chaque utilisateur ajoute une partie des données de la table 1 dans la table 2 (avec son ID user accroché), cette partie correspond à un ID "plus élevée" (ID_Section par exemple) et peut concerner un ensemble de plusieurs centaines de lignes. Ces données peuvent ensuite être modifiées ligne par ligne ou groupe de ligne par groupe de ligne.
Or, je peux rajouter de ci de là quelques lignes de mise à jour, concernant une section déjà présentée, et sans aucun doute, déjà enregistrée dans la table 2 par un ou plusieurs utilisateurs.
Afin que ce soit plus simple voyons un exemple :
Enregistrement dans la table 1 :
#1 - ID_Section = 100 - ID_Monnaie = 1 -
#2 - ID_Section = 100 - ID_Monnaie = 2 -
#3 - ID_Section = 153 - ID_Monnaie = 3 -
Mon utilisateur veut sélectionner uniquement la Section 100 et place dans la table 2 :
#1 - ID_Section = 100 - ID_Monnaie = 1 -
#2 - ID_Section = 100 - ID_Monnaie = 2 -
Maintenant, je dois ajouter dans la table 1, après cet enregistrement, d'autres données, la table 1 devient :
#1 - ID_Section = 100 - ID_Monnaie = 1 -
#2 - ID_Section = 100 - ID_Monnaie = 2 -
#3 - ID_Section = 153 - ID_Monnaie = 3 -
#4 - ID_Section = 100 - ID_Monnaie = 4 -
#5 - ID_Section = 100 - ID_Monnaie = 5 -
#6 - ID_Section = 148 - ID_Monnaie = 6 -
Ce que je veux :
Avoir une requete pour que les enregistrements #4 et #5 soient placé dans la Table 2 pour tous les utilisateurs n'ayant pas encore ces données dans ladite table, bien sur pour ceux n'acceptant que la section 100.
Ce que je faisais jusqu'à présent :
Un INSERT dans la *Table 1* d'un SELECT where ID_Section = 100 et ID_Monnaie Not In *Table 2*
Ma requête est interrompue.
Y a t-il un moyen plus simple ? Même en plusieurs requêtes simultanées ?
Merci d'avance pour vos réponses !
// Les deux tables :
Table 1 :
# Colonne Type Interclassement Attributs Null Défaut Extra Action
1 ID_Monnaie int(6) Non Aucune AUTO_INCREMENT plus
2 ID_Type int(6) Non Aucune plus
3 ID_Section int(10) Non Aucune plus
4 ID_Pays int(10) Non Aucune plus
5 ID_Region int(11) Non Aucune plus
6 ID_Continent int(11) Non Aucune plus
Table 2 :
1 ID int(10) Non Aucune AUTO_INCREMENT plus
2 Millesime varchar(50) latin1_swedish_ci Non 0 plus
3 ID_Continent int(10) Non 0 plus
4 ID_Region int(10) Non 0 plus
5 ID_Pays int(10) Non 0 plus
6 ID_Section int(10) Non 0 plus
7 ID_Type int(10) Non 0 plus
8 ID_Monnaie int(10) Non 0 plus
10 Pseudo int(10) Non 0 plus
Partager