Problème sql where table temp

Résolu
Bonjour,

je dois pas avoir les yeux en face des trous j'ai pas trouver la rubrique sql mais passons mon problème cette fois, je ne le comprend pas trop

DECLARE @dt DATETIME = DATEADD(DAY, -7, GETDATE());
    
SELECT  imre_id 
INTO #tmpImre_id
FROM import_regle
WHERE imre_d_fin_sejour < @dt

UPDATE regle
SET imre_id = NULL
WHERE imre_id = #tmpImre_id.imre_id

DELETE FROM #tmpImre_id  

DROP TABLE #tmpImre_id

je comprend pas pourquoi je peux pas faire mon where entre imre_id et ma table temporaire

si une personne veux bien m'expliquer le pourquoi du comment

merci d'avance

2 réponses

  1. Contributeur
    bonjour, moi j'essaierais ceci, sans table temporaire:
    UPDATE regle r
        JOIN import_regle t ON r.imre_id = t.imre_id AND t.imre_d_fin_sejour < @dt
    SET r.imre_id = NULL
    
    DELETE FROM import_regle
    WHERE imre_d_fin_sejour < @dt 
    0
    1. c'est vrai j'ai pas pensé à le faire comme ça merci
      0
  2. bon c'est pas la réponse pour résoudre la question mais du coup j'ai fait comme ça parce que j'y arrivé pas

    DECLARE @dt DATETIME = DATEADD(DAY, -7, GETDATE());
        
    SELECT imre_id 
    INTO #tmpImre_id
    FROM import_regle
    WHERE imre_d_fin_sejour < @dt
    
    UPDATE regle 
    SET imre_id = NULL
    FROM regle r
    INNER JOIN #tmpImre_id tmp on tmp.imre_id = r.imre_id
    
    
    DELETE FROM import_regle
    WHERE imre_id IN (SELECT *
                      FROM #tmpImre_id
                     ) 
    
    
    DROP TABLE #tmpImre_id
    0