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

Langage SQL Discussion :

variable dans requete sql


Sujet :

Langage SQL

  1. #1
    Membre averti
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Points : 330
    Points
    330
    Par défaut variable dans requete sql
    Bonjour,

    j'aurais aime savoir si il etait possible d enregistrer des donnees dans une variable pour les utiliser plus loin dans une requete.

    En gros j'aimerais savoir si quelque chose comme ca est directement faisable en sql.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    BEGIN;
    INT mavar;
    INT mavar2;
     
    FOR mavar=0;mavar++; mavar<=10
    SELECT donneX AS mavar2 FROM tableA WHERE ida = mavar
    UPDATE tableB SET donneY = mavar2 WHERE ida = mavar
     
    ENDFOR;
     
     
    END;
    Si vous avez un tutoriel pour ce genre de chose.

    D'avance merci

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Si je lis ton script :
    1) la première requête te retournera successivement 10 valeurs différentes. Elle est équivalente sans la boucle à la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT donneX
    FROM tableA
    WHERE ida BETWEEN 0 AND 10
    2)La seconde requête va affecter à tableB.donneY les valeurs de donneX de la requête précédente quand tableB.ida est compris lui aussi entre 0 et 10.

    La requête ci-dessous est à essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE tableB
    SET donneY = (
      SELECT donneX
      FROM tableA
      WHERE tableB.ida = tableA.ida)
    WHERE tableB.ida BETWEEN 0 AND 10
    Ou alors explique plus concrêtement ce que tu cherches à faire.

  3. #3
    Membre chevronné Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Points : 1 819
    Points
    1 819
    Par défaut
    Il faut travailler avec des procédures stockées, ouvrir des curseurs, déclarer des variables, utiliser des boucles, etc .

  4. #4
    Membre averti
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Points : 330
    Points
    330
    Par défaut
    Merci,

    En fait dans mon exemple le but serait en gros de pouvoir migrer toutes les donnees de la tableA vers la b

    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
    17
    TABLE A
    IDA - donne X
    1 - 1025
    2 - 2025
    3 - 3025
    ...
     
     
    TABLEB
    IDB -  IDA  - newdonnee
    25 - 1 - 1025
    36 - 2 - 2025
    48 - 1 - 1025
    64 - 3 - 3025
    65 - 2 - 2025
    100 - 1 -1025
    ....
    donc en fait la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE tableB
    SET donneY = (
      SELECT donneX
      FROM tableA
      WHERE tableB.ida = tableA.ida)
    Fonctionne bien
    mais j'arrive pas a comprendre comment sql arrive a comprendre quelel valeur il doit mettre dans la tableb.
    A quel endroit je lui dit :
    La valeur de donneeX que tu dois inserer est celle qui correspond a la valeur retourne pour select quand la valeur de la clef primaire ida correspond a la valeur de la clef etrangere ida de tableb


    En gros le select me renvoye ca:
    1025 ... 2025 .. etc

    Donc comment sait il laquelle des valeurs inserer pour chaque row?

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par xian21 Voir le message
    la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE tableB
    SET donneY = (
      SELECT donneX
      FROM tableA
      WHERE tableB.ida = tableA.ida)
    Fonctionne bien
    mais j'arrive pas a comprendre comment sql arrive a comprendre quelel valeur il doit mettre dans la tableb.
    A quel endroit je lui dit :
    La valeur de donneeX que tu dois inserer est celle qui correspond a la valeur retourne pour select quand la valeur de la clef primaire ida correspond a la valeur de la clef etrangere ida de tableb
    Donc comment sait il laquelle des valeurs inserer pour chaque row?
    La réponse est dans le WHERE ! Il fait correspondre les ida des deux tables pour savoir où insérer les valeurs. C'est le principe même de SQL !

  6. #6
    Membre averti
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Points : 330
    Points
    330
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    La réponse est dans le WHERE ! Il fait correspondre les ida des deux tables pour savoir où insérer les valeurs. C'est le principe même de SQL !

    En fait, je viens d'apprendre un truc je ne savais pas qu'une jointure dans une sous requete avait un impacte dans une table mere et inversement.
    POur moi ces deux requetes etaient completement separe.

    Je ne savais pas que ca ca fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT * FROM tablea A WHERE idb NOT IN 
    (
      SELECT idb
      FROM tableb
      WHERE tableB.idb = A.idb
    )

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

Discussions similaires

  1. [MySQL] Syntaxe insertion variable dans requete SQL
    Par przvl dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/06/2015, 15h34
  2. variable dans requete SQL pour delphi
    Par socooooool dans le forum Bases de données
    Réponses: 9
    Dernier message: 25/01/2013, 11h27
  3. [Debutant] Variables dans requete SQL
    Par Freygolow dans le forum C#
    Réponses: 11
    Dernier message: 21/05/2008, 09h14
  4. Insérer variable integer dans requete SQL?
    Par El Doctor J dans le forum C++Builder
    Réponses: 8
    Dernier message: 26/11/2007, 10h18
  5. afficher variable de requete sql dans datareport
    Par liquid dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/03/2007, 11h01

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