Bonjour

je suis en train de faire une requête SQL de migration de données(enfin de récupération de données) et j'ai un petit soucis.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
SELECT D.Id_document, Liste_utilisateurs, Id_categorie
FROM GED_diffusion_20080331_154140 D
LEFT JOIN GED_diffusion_emargement DE
  ON DE.Id_document = D.Id_document
    AND DE.Type_categorie = 'utilisateurs'
WHERE D.Id_document>0 
  AND D.Liste_utilisateurs IS NOT NULL 
  AND D.Liste_utilisateurs <>''
  AND D.Id_document = 11392
  AND Liste_utilisateurs NOT LIKE DE.Id_categorie
  AND Liste_utilisateurs NOT LIKE (DE.Id_categorie||',%')
  AND Liste_utilisateurs NOT LIKE ('%,'||DE.Id_categorie)
  AND Liste_utilisateurs NOT LIKE ('%,'||DE.Id_categorie||',%')
Mes LIKE sont la parce que dans l'ancienne table, on avait un joli champ a virgules et que l'on a décidé de passer à quelque chose de plus utilisable.

Il faut savoir que le but de cette requête est d'avoir tous les documents et leur liste d'utilisateurs qui ne sont pas déjà dans la nouvelle table(si les clients déjà migré ont déjà touché leurs données)

Le problème est que le signe % que je veux utiliser comme dans un LIKE simple ne semble pas vouloir s'assembler avec une colonne mysql.


Une idée de la syntaxe a faire ?

(ca représente des centaines de milliers de lignes, d'ou mon envie de ne récupérer qu les données a insérer dans ma requète)

Un distinct ou un group by est prévu dans cette requete pour n'avoir qu'une occurrence de la liste.


Merci

Pierre