[SQL]Problème de requête insert
Résolu/Fermé
Melaus
Messages postés
3
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
6 février 2007
-
31 janv. 2007 à 10:50
Melaus Messages postés 3 Date d'inscription mercredi 31 janvier 2007 Statut Membre Dernière intervention 6 février 2007 - 31 janv. 2007 à 14:25
Melaus Messages postés 3 Date d'inscription mercredi 31 janvier 2007 Statut Membre Dernière intervention 6 février 2007 - 31 janv. 2007 à 14:25
A voir également:
- [SQL]Problème de requête insert
- Touche insert - Guide
- Récupération serveur sql - Télécharger - Gestion de données
- Blob sql ✓ - Forum Webmastering
- Disk boot failure insert system disk and press enter - Guide
- Erreur lors de l'envoi de la requête facebook marketplace - Forum Facebook
2 réponses
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
31 janv. 2007 à 12:26
31 janv. 2007 à 12:26
Bonjour,
Quel SGBD utilises-tu ?
Si tu es sous SQL Server, tu peux par exemple passer par une fonction :
Ta requête SQL devient alors :
Quel SGBD utilises-tu ?
Si tu es sous SQL Server, tu peux par exemple passer par une fonction :
CREATE FUNCTION getDureeProd(@groupId int, @nbSec varchar(8)) RETURNS varchar(10) AS BEGIN DECLARE @nbServers int DECLARE @nbSecInt int SELECT @nbSecInt = CONVERT(int, @nbSec) SELECT @nbServers = count(*) FROM Server INNER JOIN ServerGroup ON Server.GroupId = ServerGroup.GroupId WHERE (Server.OutProdState = 0) GROUP BY Server.GroupId RETURN Convert(varchar(10), @nbServers*@nbSecInt) ENDJe pense que tu peux en comprendre le principe assez simplement.
Ta requête SQL devient alors :
INSERT INTO StatGroup (GroupId, GroupName, NbrSecProd, Mois, Annee, SumDelay, SumIncident, MTBF, MTTF, Dispo) SELECT GroupId, GroupName, getDureeProd(GroupId, DATEDIFF(second,SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 6) + '01', SUBSTRING (CONVERT(varchar(8), DATEADD(M, 1, GETDATE()), 112), 1, 6) + '01')) AS NbrSecProd, DATEPART(M, GETDATE()) AS Mois, DATEPART (YYYY, GETDATE()) AS Annee, 0 AS SumDelay, 0 AS SumIncident, 0 AS MTBF, 0 AS MTTF, 100 AS Dispo FROM ServerGroupPar contre, si ton SGBD ne supporte pas les fonctions (ou autre choses équivalentes), tu peux tenter une vue, qui te donne d'un côté le groupID, de l'autre le nombre de serveurs, et faire une jointure sur la vue en question...
Melaus
Messages postés
3
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
6 février 2007
1
31 janv. 2007 à 14:25
31 janv. 2007 à 14:25
Merci bcp pour ton aide Reivax, mais j'ai finis par trouver une solution qui fonctionne.
Je suis sur SQL Server et je n'ai que de vagues notions (les fonctions de bases).
J'ai tenté ta solution mais le resultat de NbrSecProd etait tjs le même pour tous les Host (mêmes ceux n'ayant aucun serveur). Donc je pense que je n'ai pas vraiment tout capté de ta solution. ^^
Au final j'ai reussi à faire ça :
Elle tient en une requête et fait exactement ce que je voulais obtenir. Je vais ainsi pouvoir la placer dans une fonction d'une page asp. :)
Je suis sur SQL Server et je n'ai que de vagues notions (les fonctions de bases).
J'ai tenté ta solution mais le resultat de NbrSecProd etait tjs le même pour tous les Host (mêmes ceux n'ayant aucun serveur). Donc je pense que je n'ai pas vraiment tout capté de ta solution. ^^
Au final j'ai reussi à faire ça :
INSERT INTO StatGroup (GroupId, GroupName, NbrSecProd, Mois, Annee, SumDelay, SumIncident, MTBF, MTTF, Dispo) SELECT ServerGroup.GroupId, ServerGroup.GroupName, DATEDIFF(second, SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 6) + '01', SUBSTRING(CONVERT(varchar(8), DATEADD(M, 1, GETDATE()), 112), 1, 6) + '01') * COUNT(Server.GroupId) AS NbrSecProd, DATEPART(M, GETDATE()) AS Mois, DATEPART(YYYY, GETDATE()) AS Annee, 0 AS SumDelay, 0 AS SumIncident, 0 AS MTBF, 0 AS MTTF, 100 AS Dispo FROM ServerGroup INNER JOIN Server ON ServerGroup.GroupId = Server.GroupId WHERE (Server.OutProdState = 0) GROUP BY ServerGroup.GroupId, ServerGroup.GroupName
Elle tient en une requête et fait exactement ce que je voulais obtenir. Je vais ainsi pouvoir la placer dans une fonction d'une page asp. :)