Le newbie
Messages postés200Date d'inscriptionmardi 17 octobre 2006StatutMembreDernière intervention24 mars 2012
-
19 mai 2010 à 16:09
cs_Tolliap
Messages postés60Date d'inscriptionlundi 4 décembre 2006StatutMembreDernière intervention11 janvier 2013
-
2 juin 2010 à 07:50
Bonjour, j'ai une requête à construire qui me pose problème
La requête que je dois faire doit retourner tous les enregistrement ayant trois secteurs (donc id 2 et 3 pour l'instant) et uniqement ceux qui ont un deb dans le secteur 2 supérieur à la fin du secteur 3 (maintenant il ne doit rester que les enregistrements de l'id 2).
Si vous avez une solution quelconque je prends de suite. En tout cas merci d'avance à tous ceux qui se pencheront sur ce problème.
cs_Tolliap
Messages postés60Date d'inscriptionlundi 4 décembre 2006StatutMembreDernière intervention11 janvier 2013 2 juin 2010 à 02:35
slt,
Bon, nous sommes le 2 Juin, il est 2h30 du mat, je te donne une requête, je sais pas si tu en as encore besoin...
declare @table table (id int)
declare @tableOK table (id int)
insert into @table
select distinct id from (
SELECT ROW_NUMBER() OVER(PARTITION BY id ORDER BY Secteur DESC) AS 'sNumber' ,
id
FROM newbie) as R where R.sNumber=3
DECLARE tnames_cursor CURSOR
FOR
select id from @table
OPEN tnames_cursor
DECLARE @id sysname
FETCH NEXT FROM tnames_cursor INTO @id
WHILE (@@FETCH_STATUS <> -1)
BEGIN
-------------------
insert into @tableOK
select id from newbie where id = @id and Secteur=2 and deb > (select max(fin) from newbie where id=@id and Secteur=3)
-------------------
FETCH NEXT FROM tnames_cursor INTO @id
END
CLOSE tnames_cursor
DEALLOCATE tnames_cursor
select * from newbie where id in (select id from @tableOK)
Sa fonctionne, il faudra surement l'optimiser, mais pas ce soir...lol
cs_Tolliap
Messages postés60Date d'inscriptionlundi 4 décembre 2006StatutMembreDernière intervention11 janvier 2013 2 juin 2010 à 07:50
Re,
Aprés plusieurs recherche, j'ai trouvé mieux car le tous en 1 requete :
select * from newbie where id in (
select
n.id
from newbie as n
where n.id in (
select distinct id from
(SELECT ROW_NUMBER() OVER(PARTITION BY id ORDER BY Secteur DESC) AS 'sNumber' , id FROM newbie) as R
where R.sNumber=3)
and deb>(select max(fin) from newbie where id = n.id))