Problème avec une requête sql

Fermé
sudmeteo - Modifié par sudmeteo le 23/08/2010 à 17:15
 sudmeteo - 24 août 2010 à 07:52
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

jee pee Messages postés 41174 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 26 avril 2025 9 606
23 août 2010 à 17:22
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
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
jee pee Messages postés 41174 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 26 avril 2025 9 606
23 août 2010 à 18:45
Désolé, je n'ai aucune expérience du sql sous php.
0
Pas grave, merci quand même :)
0
InAme19 Messages postés 539 Date d'inscription samedi 13 septembre 2008 Statut Membre Dernière intervention 29 novembre 2012 62
Modifié par InAme19 le 23/08/2010 à 21:29
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
Non, ça ne marche toujours pas :'(
Merci quand même :)
0
InAme19 Messages postés 539 Date d'inscription samedi 13 septembre 2008 Statut Membre Dernière intervention 29 novembre 2012 62
23 août 2010 à 21:37
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
Merci mais toujours la même erreur XD

"#1317 - Query execution was interrupted"
0
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
InAme19 Messages postés 539 Date d'inscription samedi 13 septembre 2008 Statut Membre Dernière intervention 29 novembre 2012 62
23 août 2010 à 21:44
Hum et si tu fais un SELECT * FROM UGRB ça marche au moins?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
23 août 2010 à 21:55
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
InAme19 Messages postés 539 Date d'inscription samedi 13 septembre 2008 Statut Membre Dernière intervention 29 novembre 2012 62
23 août 2010 à 21:59
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
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
InAme19 Messages postés 539 Date d'inscription samedi 13 septembre 2008 Statut Membre Dernière intervention 29 novembre 2012 62
23 août 2010 à 22:11
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
Oui la ca marche mais il n'y aucun résultat :)
0
Ouais non ca marche pas, aucun résultats :(
0
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
La requête marche mais la table vent est vide :(
0