Rechercher : dans
Par :

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

Dernière réponse le 5 jun 2009 à 14:26:59 MoYoX, le 5 jun 2009 à 14:02:00 
 Signaler ce message aux modérateurs

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 !

Meilleures réponses pour « Requêtes imbriquées: Mysql ne comprend pas. » dans :
MySQL – Optimisation VoirL’optimisation au niveau de MySQL passe par trois composants, à savoir : Optimisation du serveur MySQL Optimisation de la base de données Optimisation des requêtes Optimisation de la configuration de serveur MySQL L’optimisation du serveur peut...
SQL - Création de vues VoirQu'est-ce qu'une vue? Une vue est une table virtuelle, c'est-à-dire dont les données ne sont pas stockées dans une table de la base de données, et dans laquelle il est possible de rassembler des informations provenant de plusieurs tables. On parle...

1

 jeangilles, le 5 jun 2009 à 14:26:59

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)

Répondre à jeangilles
Collection CommentÇaMarche.net