Problème avec une requête sql

sudmeteo -  
 sudmeteo -
Bonjour,

J'aimerai faire une requête SQL qui me permet de récupérer des données dans deux tables différentes.
Jusque la c'est compréhensible :D

Voila mes deux tables:

UGRB

LAT | LON |ECH |UGRB
45.0 | 0.0 | 3 | 0.9
45.5 | 0.0 | 3 | 0.5
45.0 | 0.5 | 3 | 1.2
45.5 | 0.5 | 3 | 3.4
45.0 | 0.0 | 6 | 0.9
45.5 | 0.0 | 6 | 0.5
45.0 | 0.5 | 6 | 1.2
45.5 | 0.5 | 6 | 3.4

et VGRB
LAT | LON |ECH |VGRB
45.0 | 0.0 | 3 | -0.2
45.5 | 0.0 | 3 | -4.9
45.0 | 0.5 | 3 | 0.0
45.5 | 0.5 | 3 | 0.1
45.0 | 0.0 | 6 | -0.2
45.5 | 0.0 | 6 | -4.9
45.0 | 0.5 | 6 | 0.0
45.5 | 0.5 | 6 | 0.1

Voici donc un vulgaire exemple de la configuration de ces deux tables car en réalités, elles contiennent 19 200 lignes chacune :)

Donc voici ma question,

Comment créer une table nommée vent et qui ressemblerai a ceci:
LAT | LON |ECH |UGRB |VGRB
45.0 | 0.0 | 3 | 0.9 | -0.2
45.5 | 0.0 | 3 | 0.5 | -4.9
45.0 | 0.5 | 3 | 1.2 | 0.0
45.5 | 0.5 | 3 | 3.4 | 0.1
45.0 | 0.0 | 6 | 0.9 | -0.2
45.5 | 0.0 | 6 | 0.5 | -4.9
45.0 | 0.5 | 6 | 1.2 | 0.0
45.5 | 0.5 | 6 | 3.4 | 0.1

Bon j'ai dejà une petite idée:

J'exécute ces deux requêtes:

$sql1=CREATE TABLE vent AS SELECT * FROM UGRB ; // je copie la table UGRB dans vent
$sql2="ALTER TABLE vent ADD VGRB text"; //je fabrique une nouvelle colonne dans vent: VGRB

Mais après comment faire pour insérer les données de la colonne de VGRB de la table VGRB dans vent ???

Merci d'avance
Cordialement

6 réponses

  1. jee pee Messages postés 31912 Date d'inscription   Statut Modérateur Dernière intervention   9 986
     
    Salut,

    Cela devrait être du genre (en Oracle) :

    create table VENT as select a.LAT, a.LON, a.ECH, a.UGRB, b.VGRB
    from UGRB a , VGRB b
    where a.LAT = b.LAT
    and a.LON = b.LON
    and a.ECH = b.ECH

    cdlt

    0
  2. sudmeteo
     
    slt

    Merci pour ta réponse mais j'ai encore un problème:

    J'execute ce fichier php:

    <?php
    try
    {
    	$bdd = new PDO('mysql:host=host ;dbname=dbname', 'user', 'mot de passe');
    }
    catch (Exception $e)
    {
            die('Erreur1 : ' . $e->getMessage());
    }
    
    $sql0="create table VENT as select a.LAT, a.LON, a.ECH, a.UGRB, b.VGRB 
    from UGRB a , VGRB b 
    where a.LAT = b.LAT 
    and a.LON = b.LON 
    and a.ECH = b.ECH ";
    $bdd->query($sql0) or die ('Erreur2 : '.mysql_error());
    
    ?>
    


    Mais il s'affiche ceci à la fin : "Erreur 2:"

    Je test donc la requête sur phpyadmin

    Et il s'affiche:

    "#1317 - Query execution was interrupted"

    Je pense me tromper sur "$bdd->query($sql0)" , j'ai aussi tester $bdd->exec($sql0)
    Mais ca ne marche pas.
    0
    1. jee pee Messages postés 31912 Date d'inscription   Statut Modérateur Dernière intervention   9 986
       
      Désolé, je n'ai aucune expérience du sql sous php.
      0
    2. sudmeteo
       
      Pas grave, merci quand même :)
      0
  3. InAme19 Messages postés 573 Statut Membre 63
     
    Tu peux faire:

    CREATE TABLE vent SELECT a.LAT, a.LON, a.ECH, a.UGRB, b.VGRB
    FROM UGRB a , VGRB b
    WHERE a.LAT = b.LAT
    AND a.LON = b.LON
    AND a.ECH = b.ECH ";

    En fait c'est ce qu'a écrit jee pee mais sans le "AS"
    0
    1. sudmeteo
       
      Non, ça ne marche toujours pas :'(
      Merci quand même :)
      0
    2. InAme19 Messages postés 573 Statut Membre 63
       
      Tu as la même erreur: #1317 - Query execution was interrupted" ?

      Essaye ça:

      CREATE TABLE vent SELECT a.LAT, a.LON, a.ECH, a.UGRB, b.VGRB
      FROM UGRB a JOIN VGRB b
      ON a.LAT = b.LAT
      AND a.LON = b.LON
      AND a.ECH = b.ECH

      essaye la requête directement dans ta base de données si ça ne marche pas. Normalement la requête est bonne.
      0
    3. sudmeteo
       
      Merci mais toujours la même erreur XD

      "#1317 - Query execution was interrupted"
      0
    4. sudmeteo
       
      Il en est de même pour cette requête:

      "CREATE TABLE vent SELECT a.LAT, a.LON, a.ECH, a.UGRB, b.VGRB
      FROM UGRB a JOIN VGRB b "
      0
    5. InAme19 Messages postés 573 Statut Membre 63
       
      Hum et si tu fais un SELECT * FROM UGRB ça marche au moins?
      0
  4. Alain_42 Messages postés 5413 Statut Membre 904
     
    a mon avis il ne faut pas faire CREATE TABLE comme ça

    on fait la creation de la table une seule fois
    - soit directement par phpmyadmin

    - soit au début du script php

    CREATE TABLE vent ........... avec tous les noms de champs leur type, leur taille etc..
    voir sur le site mysql pour plus de détails

    et ensuite dans la script php il faut faire une requette
    SELECT a.LAT, a.LON, a.ECH, a.UGRB, b.VGRB
    FROM UGRB a , VGRB b
    WHERE a.LAT = b.LAT
    AND a.LON = b.LON
    AND a.ECH = b.ECH "
    et une boucle while sur le résultat qui fait un ISERT INTO vent ..... à chaque passage
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. InAme19 Messages postés 573 Statut Membre 63
     
    Si le create table marche comme cela, il y a un exemple dans la doc:
    http://dev.mysql.com/doc/refman/5.0/fr/create-table.html

    et j'ai essayé sur une de mes bases en local, il n'y a aucun soucis.
    0
  7. sudmeteo
     
    Merci mais la requête :

    SELECT a.LAT, a.LON, a.ECH, a.UGRB, b.VGRB
    FROM UGRB a , VGRB b
    WHERE a.LAT = b.LAT
    AND a.LON = b.LON
    AND a.ECH = b.ECH

    ne fonctionne pas :(

    Toujours la même erreur ><
    0
    1. InAme19 Messages postés 573 Statut Membre 63
       
      oui donc il ne veut pas faire la jointure...

      Bon, on va y aller doucement:
      SELECT a.LAT
      FROM UGRB a JOIN VGRB b
      ON 'a.LON' = 'b.LON'
      0
    2. sudmeteo
       
      Oui la ca marche mais il n'y aucun résultat :)
      0
    3. sudmeteo
       
      Ouais non ca marche pas, aucun résultats :(
      0
    4. sudmeteo
       
      Donc je fais:

      CREATE TABLE vent SELECT a.LAT, a.LON, a.ECH, a.UGRB, b.VGRB
      FROM UGRB a JOIN VGRB b
      ON 'a.LAT' = 'b.LAT'
      AND 'a.LON' = 'b.LON'
      AND 'a.ECH' = 'b.ECH'

      :)
      0
    5. sudmeteo
       
      La requête marche mais la table vent est vide :(
      0