[Subquery returns more than 1 row]. Avez-vous une idée ?

Solutions (5)
Tags :
  • table
  • Java
  • string
  • precision
  • MySQL
  • Programmation
|
[Subquery returns more than 1 row] java mysql

j'ai les deux tables suivantes :
Code Java :

Code:

Citation :
public static final String table_concerne_devis__Name = "concerne_devis";
static final String[] TABLE_concerne_devis =
{
"n_commande_f int(6) zerofill NOT NULL" ,
"reference int(4) zerofill NOT NULL" ,
"prix_unitaire double precision not null",
"qte_cf int not null" ,
"unite varchar(10) not null",
"mt_ht double not null " ,
"taux_tva double precision not null ",
"livrer varchar(5) not null ",
"constraint wwwaz PRIMARY KEY (n_commande_f,reference)" ,
"CONSTRAINT sdfdf FOREIGN KEY (n_commande_f) REFERENCES devis (n_commande_f) ",
"CONSTRAINT oiopi FOREIGN KEY (reference) REFERENCES article (reference) "
};


et celle la
Code Java :

Code:

Citation :
public static final String[] TABLE_article =
{
"reference int(4) zerofill AUTO_INCREMENT NOT NULL" ,
"designation VARCHAR(30) not null" ,
"marque VARCHAR(30) " ,
"unite VARCHAR(30) not null " ,
"t_tva double not null" ,
"p_a double not null" ,
"p_v double not null" ,
"PRIMARY KEY (reference)",
"stock_entree int ",
"stock_sortie int ",
"CONSTRAINT FuuT_PRS FOREIGN KEY (t_tva) REFERENCES taux_tva (tva) " ,
"CONSTRAINT FqarS FOREIGN KEY (unite) REFERENCES unite_article (unite) "
};


le champ livrer de la premiere table prend true ou false
je veux que lorsque on le met a true on diminue stock_sortie de la deuscieme table avec la valeur correspandante de qte_cf de la premiere table
j'ai essayé :
Code Java :

Code:

Citation :
String req1 = "update article set stock_sortie = stock_sortie - (select qte_cf from concerne_devis where n_commande_f ='"+num+"'" +
" and reference in (select reference from concerne_devis where n_commande_f ='"+num+"' ) ) where reference in " +
"(select reference from concerne_devis where n_commande_f ='"+num+"' )";
System.out.println("req1 : "+req1);
st.executeUpdate(req1);


et l'erreur :
Citation :
Subquery returns more than 1 row


avez vous une idée
merci
  • Meuniers a édité ce message
Contenus similaires
  • Autres pages sur : subquery returns more than row idee
Score
0
òh
òi
, Modérateur |
C'est bizarre ça...
J'ai pas de table MySQL sous la main.
Mais essaie de faire une table de test avec une colonne int comme ton stock_sortie
Et d'exécuter ces 2 requêtes à la suite:
  1. INSERT INTO maTable (stock_sortie) VALUES (5)
  2. UPDATE maTable SET stock_sortie = stock_sortie - 5


Puis fait un SELECT de stock_sortie pour voir sa valeur. C'est 0 ou null ?
  • Commenter cette réponse |
Score
0
òh
òi
|
oui excactement et quand je veux ajouter apres ou retrancher ca reste a null les deux requette ne fait rien
lors de la creation elle est a 0 et qd il revient a 0 c'est le null et pas de changement apres
quand j'ai modifié la table et j'ai fait not null il ma generé l'exeption lorsque le resultat devient 0

merci
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
J'ai pas tout compris.

Tu veux dire que quand tu fais un
  1. UPDATE article SET stock_sortie = stock_sortie - (SELECT qte_cf...)

Avec par exemple stock_sortie qui est égal à 5 et tu enlèves 5.
Au lieu de te faire 5-5 = 0, ça te donne null ?
  • Commenter cette réponse |
Score
0
òh
òi
|
merci pour ta reponse
alors j'ai divisé la requete en deux et ca marché
op
un autre probleme
j'ai en fin de compte deux requette sur le champ stock_sortie de la table_article(voir ci dessus)

la premiere :
Citation :
req1 = "update article set stock_sortie = stock_sortie - (select qte_cf from concerne_cf where " +
"n_commande_f = '"+num+"' and reference = '"+ds[i1]+"') where reference = '"+ds[i1]+"'";
st.executeUpdate(req1);


celle ci lorsque je veux retrancher de la quantite d'article
et celle ci :
Citation :
String req1 = "update article set stock_sortie = stock_sortie + '"+ qte +"' where reference = '"+ref+"' ";

st.executeUpdate(req1);


celle ci lorsque je veux augmenter de la quantite d'article

d'abord lorsque j'insere un article c'est avec stock_entree=stock_sortie = 0
et apres lorsque j'excecute la requete d'ajout ca marche
lorsque j'execute la requete de retrancher ca marche et ci la valeur de champ coincide avec 0 => je ne peux pas autre fois ajouter ou retrancher (elle affiche null)
que faire
merci d'avance
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
Salut,

L'erreur que tu as est que ta requête (select qte_cf from concerne_devis ....) retourne plus d'une ligne.
Du coup, tu ne peux pas faire un set stock_sortie = stock_sortie - (plusieurs lignes)

Mais je sais pas pourquoi t'as besoin d'une requête aussi compliquée... Tu as plusieurs commandes qui ont le même n_commande_f ?
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS