Requêtes imbriquées: Mysql ne comprend pas.

Fermé
MoYoX Messages postés 127 Date d'inscription jeudi 4 juin 2009 Statut Membre Dernière intervention 21 mars 2014 - 5 juin 2009 à 14:02
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 - 5 juin 2009 à 14:26
Bonjour à tous !


J'utilise un client mysql de version 5.0.22
et j'aimerais lui faire comprendre la requête suivante:
SELECT * FROM regionnaux WHERE(SELECT proch_vt FROM regionnaux WHERE MONTH(trans_vt)= $mois_vt)


proch_vt: est une date au format "TEXT"
trans_vt: est cette même date transformée au format "DATE"
$mois_vt: est une variable contenant le numéro du mois
regionnaux: est le nom de ma table

Il se trouve que j'aimerais pouvoir sélectionner plusieurs champs, par exemple:
SELECT * FROM regionnaux WHERE(SELECT proch_vt FROM regionnaux WHERE MONTH(trans_vt)= $mois_vt && SELECT proch_ats FROM regionnaux WHERE MONTH(trans_ats)= $mois_ats)


(le
&&
c'est pour montrer que j'aimerais associer ces deux requêtes dans une seule, je sais bien que ça ne fonctionnera pas en sql)

Le problème, c'est que quand j'exécute la première requête, PhpMyAdmin me dit:
#1242 - Subquery returns more than 1 row 


Pourtant, dans la première requête, je sélectionne bien un unique champ dans la requête imbriquée.
Et je précise que
SELECT proch_vt FROM regionnaux WHERE MONTH(trans_vt)= $mois_vt

fonctionne bien seul.
Voilà, désolé si ça a pas été trop clair, mais j'aimerais savoir où j'ai faux.

D'avance merci !

1 réponse

jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 186
5 juin 2009 à 14:26
SELECT * FROM regionnaux WHERE(SELECT proch_vt FROM regionnaux WHERE MONTH(trans_vt)= $mois_vt && SELECT proch_ats FROM regionnaux WHERE MONTH(trans_ats)= $mois_ats)

Dans ton where, il faut que tu fasses une comparaison ou quelquechose dans ce genre
là tu récupère ce que te renvoies le select, mais il faut que tu le compare avec quelquechose !

si j'ai bien compris ce que tu veux faire pour ta première requête, ca doit donner quelquechose comme ca :

SELECT * FROM regionnaux WHERE proch_vt = (SELECT proch_vt FROM regionnaux WHERE MONTH(trans_vt)= $mois_vt)
0