Menu

#1242 - Subquery returns more than 1 row [Résolu]

Impide - 17 déc. 2017 à 15:46 - Dernière réponse :  Impide
- 17 déc. 2017 à 17:38
Bonjour,

Je souhaiterai mettre dans une table vitesse moyenne avec comme attribut vitesse le quotient de 2 données d'une autre table (Distante et durée) : vitesse = Distance/durée.
Donc j'ai essayer ça :

UPDATE VitessesMoyenne
SET Vitesse = (SELECT Distance FROM Courses)/(SELECT Duree FROM Courses);

mais ça m'affiche une erreur #1242 - Subquery returns more than 1 row.

J'ai essayer plein d'autre truc avec INSERT INTO mais je trouve pas.
Je précise que je suis débutant.
Si quelqu'un pourrait m'aidez s'il vous plaît.
Afficher la suite 

Votre réponse

6 réponses

yg_be 5583 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 20 mai 2018 Dernière intervention - 17 déc. 2017 à 16:06
0
Utile
bonjour,
je te suggère d'essayer ceci
SELECT *,  Distance/Duree as Vitesse from Courses
. tu peux utiliser cette requête ensuite, comme si c'était une table.

si cela ne te convient pas, explique quels sont les champs dans les tables Courses et VitessesMoyenne.
explique nous aussi pourquoi tu veux enregistrer la vitesse moyenne dans une table, alors que tu peux la calculer quand tu veux: il n'est pas recommandé d'enregistrer des informations calculables.
Merci de votre réponse,
Je viens de l’exécuter et j'ai bien obtenu la vitesse.

Moi ce que je voudrais c'est mettre ce résultat dans une nouvelle table que j'ai crée VitesseMoyenne afin de connaître la Vitesse Moyenne par Course.

Dans la table Course il y a comme attribut :
-NoCourse
-NomCourse
-InfoCourse
-Distance
-Duree
-Difficulté, avec comme clé primaire NoCourse.

Et dans la table VitesseMoyenne :
-NoCourse
-Vitesse, avec comme clé primaire et étrangère NoCourse.

En espérant avoir été le plus clair possible.
yg_be 5583 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 20 mai 2018 Dernière intervention > Impide - 17 déc. 2017 à 17:38
Alors je te suggère de faire ainsi:
CREATE VIEW VitesseMoyenne AS SELECT NoCourse, Distance/Duree as Vitesse from Courses;
Commenter la réponse de yg_be
jordane45 21059 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 mai 2018 Dernière intervention - 17 déc. 2017 à 16:53
0
Utile
Bonjour,

J'ajouterai que ta requête UPDATE ne contient pas de WHERE
Il sera donc impossible à ton programme de déterminer quelle(s) ligne(s) mettre à jour.
Idem pour ta sous-requête ... que retournera donc toutes les lignes de ta table "courses"


NB : Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).
Explications disponibles ici : http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Commenter la réponse de jordane45
jordane45 21059 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 mai 2018 Dernière intervention - 17 déc. 2017 à 17:20
0
Utile
Tu dois pouvoir le faire comme ça.
REPLACE INTO VitesseMoyenne (NoCourse,Vitesse) 
SELECT NoCourse, 
               (Distance/Duree) as Vitesse
 FROM Courses
Oh la la,

C'est parfait c'est exactement ça que je recherchais je te remercie infiniment !
et merci pour l'info je serais la prochaine fois pour poster du code.
Je pense que je peux clôturer du coup :)
Commenter la réponse de jordane45