Bonjour, j'ai des tables comme ceci:
Entrée de table: P>
Id | Total_Comments
_____________________
1 | 0
2 | 0
3 | 0
4 | 0 P>
Table Commentaires: P>
ID | eid | Commentaire
_____________________
1 | 1 | Commentaire SDFD
2 | 1 | Test d'essais
3 | 1 | Texte de commentaire
4 | 2 | Commentaire Dummy
5 | 2 | Exemple de commentaire
6 | 1 | FG FGH DFH P>
Requête I Écrire: P>
UPDATE entry SET total_comments = total_comments + 1 WHERE id IN ( SELECT eid FROM comments WHERE id IN (1,2,3,4,5,6))
5 Réponses :
C'est exactement ce que je m'attendais. L'identifiant est dans le jeu que vous le donnez, donc total_comments = total_comments + 1. P>
Il ne va pas y ajouter un pour chaque instance de la même valeur: ce n'est pas la façon dont les travaux sont en cours. En retournera un simple booléen oui / non. P>
Je sais ... mais je veux une méthode pour que je puisse compter le nombre d'entrées.Id à sous-région. Je peux le faire en exécutant la sous-requier Spècher puis exécutant la requête de mise à jour en utilisant une boucle pour toutes les personnes. Mais je veux le faire dans une question qui est mon porblem :(
Essayez:
UPDATE entry SET total_comments = (SELECT COUNT(*) FROM comments WHERE entry.id = comments.eid GROUP BY id)
Cela fonctionnera pour tous les enregistrements dans la table d'entrée, mais je veux exécuter uniquement des enregistrements spécifiés, c'est pourquoi j'ai utilisé la clause ...
Si vous avez vraiment besoin de TOTAL_COMMENTS dans une table séparée, je ferais une vue. De cette façon, vous évitez la tâche de maintenance de la mise à jour de la table totale_comments. P> < / p>
+1: Je suis tout à fait d'accord, c'est un meilleur choix de conception que la structure de la table actuelle.
Utilisation:
UPDATE entry SET total_comments = (SELECT COUNT(*) FROM COMMENTS c WHERE c.eid = id GROUP BY c.eid) WHERE id IN ( SELECT eid FROM comments WHERE id IN (1,2,3,4,5,6))
ouais je cherche quelque chose comme ça ... mon motivation est d'exécuter la requête de mise à jour basée sur la sous-requête ... c'est pour mettre à jour "Total_Comments" dans la table "Entrée" avec le nombre de commentaires acutals, pour ID dans "Entrée" si je Exécutez la requête que j'ai spécifiée que cela n'ajoute que 1 pour tous les numéros de commentaires trouvés dans Subqery. Ici, quelle requête SQL passe après des exécutions de sous-requête: Mettre à jour le jeu de saisie Total_Comments = Total_Comments + 1 où ID in (1,1,1,2,2,1) SO est une fois que la mise à jour ne fonctionne qu'une seule fois pour une table d'entrée 1 et 2. Coz sa comment en marche. Mais je veux savoir comment la conduire 4 fois pendant 1 et 2 fois pour 2.
La seule façon dont je pense est de courir sous-requête quelque chose comme ça que je ne sais pas comment faire: Mettre à jour l'entrée Set Total_Comments = TOTAL_COMMENTS + @COUNT Où identifiant (sélectionnez EID, compte (*) en tant que @Count de commentaires où ID IN ( 1,2,3,4,4,5,6)) Mais alors en ne fonctionne pas CoZ de plusieurs lignes et je ne sais pas aussi comment référer @Count en état de réglage :(
UPDATE entry e SET total_comments = ( SELECT COUNT(*) FROM comments WHERE eid = e.id) WHERE e.id in (SELECT eid FROM comments WHERE id IN (1,2,3,4,5,6))