Lorsque j'ai normalisé ma base de données, j'ai utilisé une valeur de texte pour regrouper les entrées en leur donnant la même clé étrangère. Cependant, j'avais aussi 2 autres champs avant la normalisation qui utilisaient des numéros de référence pour regrouper les entrées, une en paires d'entrées et une en groupes d'entrées. Étant donné que ces entrées groupées n'ont pas nécessairement la même valeur de texte, certaines entrées auront été exclues du regroupement (ID de clé étrangère partagée).Requête SQL relative au regroupement des entrées
J'ai besoin d'une requête qui sélectionne toutes les entrées qui partagent un PairRef ou un GroupRef où les entrées de ce groupe n'ont pas toutes le même ForeignKeyID.
Exemple:
ID PairRef GroupRef ForeignKeyID TextValue (in linked table2)
1 25 25 123 'Text value 123'
2 25 25 255 'Text value 255'
3 1 50 201 'Text value 201'
4 1 50 201 'Text value 201'
5 2 50 202 'Text value 202'
6 2 50 202 'Text value 202'
7 3 50 203 'Text value 203'
8 3 50 203 'Text value 203'
Il me faut ensuite pouvoir modifier les données de les regrouper. Le problème est que, pour ce faire, j'aurais besoin que la requête provienne de plus d'une table car j'ai besoin de voir le texte associé à la clé étrangère. J'ai trouvé qu'en utilisant phpMyAdmin, bien que je puisse créer des requêtes à partir de plusieurs tables en utilisant des jointures internes, les résultats de ces requêtes ne peuvent pas être modifiés de la même manière que les requêtes d'une table.
Je suppose que l'alternative serait de faire une requête de mise à jour sur les résultats de la requête. Pourriez-vous donner un exemple d'un moyen rapide et facile de faire une requête de mise à jour sur les résultats de la requête, sans perdre la requête originale qui doit être utilisée à plusieurs reprises. Dans l'exemple ci-dessus, pour le regroupement de ID 1 et ID 2 qui partagent le même PairRef, je devrais physiquement regarder TextValue 123 et 255 et selon lequel était l'étiquette de texte la plus appropriée, je choisirais quelle entrée changer. Disons que la valeur textuelle 123 était la valeur que je voulais conserver pour ce groupe. Je mettrais à jour l'ID 2 vers ForeignKeyID 123, ce qui changerait évidemment automatiquement TextValue pour cette entrée en 'Text value 123'. Pour le regroupement des ID 3 à 8, qui partagent le même GroupRef, si je décidais après avoir regardé les données de les regrouper toutes en tant que 'Text value 201', je changerais les ID 5,6,7 et 8 à ForeignKeyID = 201, ce qui changerait automatiquement tous les TextValues pour ces entrées en 'Text Value 201'.
Les ID 1 à 8 n'apparaîtraient alors plus dans les résultats de la requête car le problème de regroupement aurait été résolu et ils ne répondraient plus aux critères de la requête.
Je dois trouver le moyen le plus simple de le faire, car le regroupement des entrées est l'un des objectifs principaux des bases de données et il y a beaucoup de choses à faire.
Merci
Voici un SQLFiddle pour créer et peupler la table ci-dessus, devrait-il être de toute aide à d'autres: http://sqlfiddle.com/#!2/ec9b2. Malheureusement, je n'ai pas compris la question, donc je ne peux pas être plus utile. – JohnLBevan