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 :

Insertion dans Table Temporaire


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 110
    Par défaut Insertion dans Table Temporaire
    Bonjour,

    Je travaille en php5 avec des base Sql.

    Je ne suis pas un pro du sql et j'ai un problème assez bizarre sur le script donné ci-après avec des tables temporaires. le problème est que lorsque je teste mon script en local tout se passe bien mais lorsque je met le script chez mon hébergeur (ovh) j'ai le message d'erreur suivant :

    erreur requete INSERT TEMP_AIDES Table 'base2.temporary_aides' doesn't exist

    Le principe du script est le suivant :
    1. création d'une table temporaire dans ma base n°2
    2. Récupération de données de 2 tables (table_1 et table_2) de ma base n°2
    3. Test sur des champs
    4. Insertion dans la table temporaire

    Merci d'avance à celui ou celle qui pourra m'apporter de l'aide car là je m'arrache le peu de cheveux qu'il me reste.

    //
    connexion_bdd2(); // connexion à ma base 2
    mysql_query('CREATE TEMPORARY TABLE IF NOT EXISTS base2.temporary_aides (
    id_aides MEDIUMINT (11) NOT NULL AUTO_INCREMENT,
    id_concession MEDIUMINT (11) NOT NULL,
    aides_vis VARCHAR ( 8 ) collate latin1_general_ci NOT NULL,
    aide_ppa FLOAT DEFAULT 0,
    aide_produit FLOAT DEFAULT 0,
    aide_bonus FLOAT DEFAULT 0,
    aide_casse FLOAT DEFAULT 0,
    aide_divers FLOAT DEFAULT 0,
    PRIMARY KEY ( id_aides )) ') or die("erreur requete creation table temporary aides : ".mysql_error());
    //

    connexion_bdd2();
    $requete=mysql_query('SELECT SQL_SMALL_RESULT * FROM table_1') or die("erreur requete 1)".mysql_error());
    WHILE ($resultat=mysql_fetch_array($requete, MYSQL_ASSOC)){

    $id_cmd = magic_s($resultat['id_commande']);
    $aide_ppa = 0;

    connexion_bdd2();
    $req_aide=mysql_query("SELECT * FROM table_2 WHERE id_commande =".quote_smart($id_cmd)." order by nom_type_aides") or die("erreur requete 2)".mysql_error());

    WHILE($res_aide=mysql_fetch_array($req_aide, MYSQL_ASSOC)){
    $type_aide = magic_s($res_aide['id_type_aides']);

    IF ($type_aide == "1") { $aide_ppa = "100"; }
    ELSE { $aide_ppas = "0"; }
    }
    $req_temp_aides = sprintf("INSERT INTO base2.temporary_aides VALUES('',%s,%s,%s,%s,%s,%s,%s)",
    quote_smart($id_conc),
    quote_smart($vis),
    quote_smart($aide_ppa),
    quote_smart($aide_pdt),
    quote_smart($aide_bm),
    quote_smart($aide_pcass),
    quote_smart($aide_div) );
    mysql_query($req_temp_aides) or die("erreur requete INSERT TEMP_AIDES ".mysql_error());
    }

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 331
    Par défaut
    C'est seulement la session qui a créé la table temporaire qui pourra voir cette table. Les tables temporaires sont supprimées à la déconnexion.
    Or, je vois dans ton script plusieurs connexions : connexion_bdd2().

    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
    mysql:root:mysql> use b1;
    Database changed
    mysql:root:b1> 
    mysql:root:b1> create temporary table t1(id int);
    Query OK, 0 rows affected (0.03 sec)
     
    mysql:root:b1> desc t1;
    +-------+---------+------+-----+---------+-------+
    | Field | Type    | Null | Key | Default | Extra |
    +-------+---------+------+-----+---------+-------+
    | id    | int(11) | YES  |     | NULL    |       | 
    +-------+---------+------+-----+---------+-------+
    1 row in set (0.02 sec)
     
    mysql:root:b1> 
    mysql:root:b1> connect b1;
    Connection id:    3
    Current database: b1
     
    mysql:root:b1> desc t1;
    ERROR 1146 (42S02): Table 'b1.t1' doesn't exist
    mysql:root:b1>
    Rachid A.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 110
    Par défaut
    Bonsoir,

    Merci pour votre réponse, je vais essayer de modifier mon script demain matin. Une question quand même: Pourquoi ce script (avec trop de connexion à la base de données) fonctionne en local et pas chez mon hébergeur?

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 110
    Par défaut
    Bonjour,

    J'ai éliminé les connexions "en trop" mais cela ne marche pas plus loin dans mon script.

    En fait, ma problématique est la suivante:

    1. Requete SELECT sur table 1 de Base 1
    2. CREATE table temporaire temp dans Base 2
    3. Récupération des infos de table 1 de Base 1
    4. INSERT des données de table 1 dans temp de Base 2
    5. Récupération de données de table 3 de Base 2
    6. CREATE table temporaire temp2 dans Base 2
    6. INSERT des données de table 3 Base 2 dans temp2 de Base 2
    7. SELECT des données de temp1 avec JOINTURE des données de table 3 (A priori tout est dans Base 2)
    8. Affichage des info.

    Et là il ne s'affiche rien.

    J'avoue qu'avec tout cela je suis un peu perdu et que je ne sais pas dans quel ordre je dois positionner ces commandes ni comment gérer les connexions aux 2 bases.

    Merci de votre aide.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 331
    Par défaut
    Merci de poster le script modifié.

    Rachid A.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 110
    Par défaut
    Problème résolu. j'avais 2 mysql_close qui trainaient. Après les avoir enlevé j'ai mon résultat.

    Merci à ceux qui m'ont apporté des réponses.

    Bonne journée.

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

Discussions similaires

  1. Insert select dans table temporaire
    Par cyrgan dans le forum Adaptive Server Enterprise
    Réponses: 4
    Dernier message: 19/06/2008, 20h32
  2. débutant-Insertion dans table valeurs saisies sur formulaire
    Par Michel Hubert dans le forum Access
    Réponses: 2
    Dernier message: 13/04/2006, 09h07
  3. [Conception] boucle insertion dans table
    Par Invité dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 15/03/2006, 09h38
  4. Insertion dans table SQL server (Trigger) Aidz moi SVP????
    Par pop bob dans le forum Développement
    Réponses: 2
    Dernier message: 30/07/2005, 23h55
  5. Réponses: 3
    Dernier message: 19/11/2004, 21h48

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