IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

HyperFileSQL Discussion :

Scinder une valeur chaine et la répartir dans des champs destination


Sujet :

HyperFileSQL

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2011
    Messages : 49
    Points : 42
    Points
    42
    Par défaut Scinder une valeur chaine et la répartir dans des champs destination
    Concernant HFSQL je ne comprends pas pourquoi , en voulant redistribuer la clé composée [Taille_ChaineExif] dans les champs Taille et DonneeExif , la clé composée est stockée dans le champ de la table RELAIS et je voudrais l'éclater dans les champs IDExif et Phototaille de la table RELAIS2

    la requête
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO
    RELAIS2	
    (IDExif,PhotoTaille)
    SELECT SUBSTR (CLECOMP,INSTR(CLECOMP,'_')+1), 9
    FROM RELAIS;
    Me remplit convenablement la table avec la donnée Exif dans le champ idoine et la valeur 9 dans le champ taille;
    La requête
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO
    RELAIS2	
    (PhotoTaille)
    SELECT SUBSTR (CLECOMP,1,INSTR(CLECOMP,'_')-1)
    FROM RELAIS;
    Me remplit convenablement la table avec la Taille dans le champ idoine ;
    La requête
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO
    RELAIS2	
    (IDExif,PhotoTaille)
    9,SELECT SUBSTR (CLECOMP,1,INSTR(CLECOMP,'_')-1)
    FROM RELAIS;
    Est en échec que je mette ou pas des guillemets ou que j'utilise ou pas le terme VALUE, alors que
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO
    RELAIS2	
    (PhotoTaille,IDExif)
    SELECT SUBSTR (CLECOMP,1,INSTR(CLECOMP,'_')-1),9
    FROM RELAIS;
    Fonctionne parfaitement, et que la requête
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO
    RELAIS2	
    (IDExif,PhotoTaille)
    SELECT SUBSTR (CLECOMP,INSTR(CLECOMP,'_')+1),SELECT SUBSTR (CLECOMP,1,INSTR(CLECOMP,'_')-1)
    FROM RELAIS;
    Est en échec ????
    Y a-t-il une explication ?
    Comment réaliser cette opération ?
    Merci de vos lumières
    TC

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2011
    Messages : 49
    Points : 42
    Points
    42
    Par défaut Je me réponds à moi même
    le code
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	INSERT INTO
    	RELAIS2	
    	(IDExif,PhotoTaille)
    	SELECT
    	SUBSTR (CLECOMP,INSTR(CLECOMP,'_')+1),
    	SUBSTR (CLECOMP,1,INSTR(CLECOMP,'_')-1)
    	FROM RELAIS;
    fonctionne !
    Bonne journée TC

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour*,
    Ta troisième requête ne passe pas, car syntaxiquement elle est incorrecte.
    D'ailleurs si tu enlèves la partie "INSERT INTO", tu verras qu'elle sera aussi refusée.
    Elle revient à lancer ceci:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    9, select * from MaTable

    Idem pour la dernière:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select col1 from MaTable,Select col2 from MaTable

    Pour une requête d'insertion, tu dois:
    • Soit spécifier une liste de valeur avec l'opérateur VALUES
    • Soit mettre une requête SELECT "valide"


    Or dans les deux cas que tu nous présentes et qui sont en échec, la requête SELECT n'est pas valide du tout.
    Tu aurais la même erreur avec n'importe quel SGBD d'ailleurs.

    Donc la bonne syntaxe est:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    INSERT INTO
    RELAIS2	
    (IDExif,PhotoTaille)
    SELECT SUBSTR (CLECOMP,INSTR(CLECOMP,'_')+1),SUBSTR (CLECOMP,1,INSTR(CLECOMP,'_')-1)
    FROM RELAIS;

    Tatayo.

    *: oui, ça se fait de dire bonjour

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2011
    Messages : 49
    Points : 42
    Points
    42
    Par défaut Merci de tes explications
    Bonjour ,
    nous nous sommes répondus de manière quasi simultanée , ta réponse confirme la solution qui fonctionne chez moi
    Désolé pour le bonjour , en fait je reprenais la suite de la question précédente , d'où l'omission du bonjour sur ce deuxième message :-)
    A ce propos, si tu avais une piste pour m'aider à résoudre le problème sur lequel je bute , je suis preneur :-)
    Merci d'avance !
    Bonne soirée
    TC

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Citation Envoyé par TChatenet Voir le message
    A ce propos, si tu avais une piste pour m'aider à résoudre le problème sur lequel je bute , je suis preneur :-)
    Si la requête fonctionne, quel est le problème ?

    Tatayo.

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2011
    Messages : 49
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Si la requête fonctionne, quel est le problème ?

    Tatayo.
    Merci de t'y intéresser :-)
    J'en suis à utiliser une table RELAIS que je peuple avec les valeurs ' doublonnées '
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    sResult = [
    INSERT INTO
    RELAIS
    (CLECOMP,ITER)
    SELECT 
    CONCAT(Collectiondephotos.PhotoTaille,'_',Collectiondephotos.PhotoExif) AS valeur, 
    COUNT(*) AS nombre_de_repetition
    FROM Collectiondephotos
    WHERE Collectiondephotos.PhotoExif <>''
    GROUP BY valeur
    HAVING nombre_de_repetition > 1
    ]
    Puis je transfère ces valeurs en une table RELAIS2 qui me sert juste à éclater la clé permettant de reconnaitre les photos doublonnées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sResult = [
    	INSERT INTO
    	RELAIS2	
    	(IDExif,PTaille)
    	SELECT
    	SUBSTR (CLECOMP,INSTR(CLECOMP,'_')+1),
    	SUBSTR (CLECOMP,1,INSTR(CLECOMP,'_')-1)
    	FROM RELAIS;
    ]
    Avec comme idée d'ensuite faire une requête du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    sResult = [
    SELECT
    Fichier,
    Chemin,
    Nom,
    PhotoTaille,
    PhotoExif,
    PhotoDateModif
    FROM 
    Collectiondephotos,
    Relais2
    WHERE
    Collectiondephotos.PhotoExif = Relais2.IDExif
    AND
    Collectiondephotos.PhotoTaille = Relais2.PTaille;
    ]
    Cette requête qui ne renvoie pas de résultat pour le moment et je n'ai pas eu le temps de chercher pourquoi est destinée à alimenter le visionneur de doublons .
    Le problème est que ne suis pas certain d'utiliser la meilleure procédure qui soit pour réaliser mon souhait
    D'où ma quête de pistes autres :-)
    En te remerciant , bonne soirée TC

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2016] Trouver la position d'une valeur hex(oudecimal) non affichable dans une chaine
    Par Michel-philippines dans le forum Excel
    Réponses: 6
    Dernier message: 18/12/2019, 12h24
  2. Réponses: 1
    Dernier message: 26/12/2013, 11h46
  3. Réponses: 6
    Dernier message: 19/10/2007, 14h02
  4. Trouver une valeur qui n'est pas dans un champ
    Par eric41 dans le forum Requêtes
    Réponses: 6
    Dernier message: 16/05/2006, 16h48
  5. Une valeur ne s'affiche pas dans un champ texte
    Par KibitO dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/03/2005, 20h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo