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

Requêtes MySQL Discussion :

requête insert select


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué Avatar de hiul dragonfel
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 199
    Points : 155
    Points
    155
    Par défaut requête insert select
    bonjour je me retrouve avec une requête assé balèze.

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    INSERT INTO details_facture 
    ( 
      id_facture, 
      id_service, 
      prix_UHT, 
      prorata, 
      prix_HT, 
      prix_TVA, 
      payer, 
      date_achat 
    ) 
    VALUES (   SELECT
        id_facture, 
        17, 
        sum(a_t.prix_HT), 
        0,
        sum(a_t.prix_HT), 
        ROUND(sum(a_t.prix_HT) * 0.196, 2), 
        3, 
        2010-06-01 
      FROM factures AS f 
      INNER JOIN membre AS m 
      ON m.id_membre = f.id_membre 
      INNER JOIN appels_telephoniques AS a_t 
      ON m.telephone = CONCAT('0', SUBSTRING(a_t.appelant, 4, 1), '.', SUBSTRING(a_t.appelant, 5, 2), '.', SUBSTRING(a_t.appelant, 7, 2), '.', SUBSTRING(a_t.appelant, 9, 2), '.', SUBSTRING(a_t.appelant, 11, 2)) 
      OR m.telephone_2 = CONCAT('0', SUBSTRING(a_t.appelant, 4, 1), '.', SUBSTRING(a_t.appelant, 5, 2), '.', SUBSTRING(a_t.appelant, 7, 2), '.', SUBSTRING(a_t.appelant, 9, 2), '.', SUBSTRING(a_t.appelant, 11, 2)) 
      OR m.telephone_3 = CONCAT('0', SUBSTRING(a_t.appelant, 4, 1), '.', SUBSTRING(a_t.appelant, 5, 2), '.', SUBSTRING(a_t.appelant, 7, 2), '.', SUBSTRING(a_t.appelant, 9, 2), '.', SUBSTRING(a_t.appelant, 11, 2)) 
      WHERE date_debut >= '2010-06-01' 
      AND date_debut <= '2010-06-30' 
      GROUP BY id_facture
    )
    il me sort qu'il y a une erreur à partir de "VALUES("

    y a un moyen de faire se genre de requête ?
    Le langage de programmation le plus vieux, le plus optimiser et le plus efficace est l'ADN quelqu'un d'extrêmement intelligent l'a obligatoirement inventé.

  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 : 60
    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 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    VALUES ne s'emploie qu'avec une requête INSERT simple. Ici, il s'agit semble t-il de la forme INSERT...SELECT.

    Votre requête devrait donc être :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    INSERT INTO details_facture 
    ( 
      id_facture, 
      id_service, 
      prix_UHT, 
      prorata, 
      prix_HT, 
      prix_TVA, 
      payer, 
      date_achat 
    )
    SELECT 
        id_facture, 
        17, 
        sum(a_t.prix_HT), 
        0,
        sum(a_t.prix_HT), 
        ROUND(sum(a_t.prix_HT) * 0.196, 2), 
        3, 
        2010-06-01 
      FROM factures AS f 
      INNER JOIN membre AS m 
      ON m.id_membre = f.id_membre 
      INNER JOIN appels_telephoniques AS a_t 
      ON m.telephone = CONCAT('0', SUBSTRING(a_t.appelant, 4, 1), '.', SUBSTRING(a_t.appelant, 5, 2), '.', SUBSTRING(a_t.appelant, 7, 2), '.', SUBSTRING(a_t.appelant, 9, 2), '.', SUBSTRING(a_t.appelant, 11, 2)) 
      OR m.telephone_2 = CONCAT('0', SUBSTRING(a_t.appelant, 4, 1), '.', SUBSTRING(a_t.appelant, 5, 2), '.', SUBSTRING(a_t.appelant, 7, 2), '.', SUBSTRING(a_t.appelant, 9, 2), '.', SUBSTRING(a_t.appelant, 11, 2)) 
      OR m.telephone_3 = CONCAT('0', SUBSTRING(a_t.appelant, 4, 1), '.', SUBSTRING(a_t.appelant, 5, 2), '.', SUBSTRING(a_t.appelant, 7, 2), '.', SUBSTRING(a_t.appelant, 9, 2), '.', SUBSTRING(a_t.appelant, 11, 2)) 
      WHERE date_debut >= '2010-06-01' 
      AND date_debut <= '2010-06-30' 
      GROUP BY id_facture
    Mais vérifiez d'abord que le SELECT seul donne bien le jeu de données voulu pour l'insertion.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre habitué Avatar de hiul dragonfel
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 199
    Points : 155
    Points
    155
    Par défaut
    merci j'ai oublié de mettre résolu comme j'ai eu la réponse sur le chat.

    merci à toi.
    Le langage de programmation le plus vieux, le plus optimiser et le plus efficace est l'ADN quelqu'un d'extrêmement intelligent l'a obligatoirement inventé.

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

Discussions similaires

  1. [Débutant] problème dans la requête [INSERT][SELECT]
    Par imenamouna dans le forum C#
    Réponses: 2
    Dernier message: 26/07/2012, 13h36
  2. Requête Insertion + Select
    Par Tyra3l dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/06/2011, 15h09
  3. Requête INSERT / SELECT
    Par Rymaya dans le forum Langage SQL
    Réponses: 1
    Dernier message: 04/04/2011, 17h46
  4. Erreur requête insert, select,sum
    Par magicstar dans le forum Débuter
    Réponses: 2
    Dernier message: 09/11/2009, 09h41
  5. Requête INSERT INTO SELECT
    Par unix27 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/02/2007, 00h36

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