Subquery returns more than 1 row mysql java
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Subquery returns more than 1 row mysql java



  1. #1
    invitec7fd8fb0

    Subquery returns more than 1 row mysql java


    ------

    bonjour,
    j'ai les deux tables suivantes :
    Code Java :

    Code:
    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:
    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:
    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 :
    Code HTML:
    [CODE][PHP][QUOTE]Subquery returns more than 1 row[/QUOTE][/PHP][/CODE]
    avez vous une idée

    -----

  2. #2
    invite765732342432
    Invité

    Re : Subquery returns more than 1 row mysql java

    Citation Envoyé par pourpo Voir le message
    avez vous une idée
    Lance simplement la partie qui suit le signe "moins" et tu verras qu'elle renvoie plusieurs lignes.
    Ce qu'elle ne devrait pas faire dans le cadre de cette requête (comme le résultat est utilisé pour faire une opération, il faut qu'il soit constitué d'un seul nombre...)

  3. #3
    invitec7fd8fb0

    Re : Subquery returns more than 1 row mysql java

    et comment faire a votre avis

  4. #4
    invite765732342432
    Invité

    Re : Subquery returns more than 1 row mysql java

    Citation Envoyé par pourpo Voir le message
    et comment faire a votre avis
    Impossible à dire sans avoir d'infos fonctionnelles sur tes tables et/ou leur contenu.
    La solution peut passer par un MIN ou un SUM sur qte_cf.
    Mais ça peut également nécessiter de revoir totalement la requête. Ou même il pourrait s'agir de données vérolées !

    Vu le peu d'assurance que tu as sur cette base, je te conseille de faire TRES attention avant de manipuler ce code.
    (et j'espère qu'il s'agit juste d'un exercice, et pas d'une application réellement utilisée)

  5. A voir en vidéo sur Futura
  6. #5
    invitec7fd8fb0

    Re : Subquery returns more than 1 row mysql java

    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 :


    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 :


    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

  7. #6
    invite62588872

    Re : Subquery returns more than 1 row mysql java

    Hello,

    je ne vais pas répondre à ta question, mais pense à utiliser des PreparedStatement si tu écris des queries manuellement en Java.

    C'est extrêmement important, surtout en ce qui concerne la sécurité de ton application (voir "SQL injection" sur Google si tu veux en apprendre un peu plus).

    Et pour les PreparedStatement, il y a 3M de tutos sur le net Pense juste à les utiliser !

    Amicalement,

    Nils.

Discussions similaires

  1. suppression d'un row dans netbeans
    Par invite15b5e31b dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 21/04/2008, 21h14
  2. Java, java, java, where are you, there's a mission for you !
    Par invite1237a629 dans le forum Logiciel - Software - Open Source
    Réponses: 35
    Dernier message: 16/03/2008, 22h10
  3. mise a jour interface sous java avec liaison a mysql
    Par invite1bc1ddb5 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 21/02/2008, 17h26
  4. Connexion Java - BD MySQL sur un serveur distant
    Par invited927d23c dans le forum Internet - Réseau - Sécurité générale
    Réponses: 3
    Dernier message: 19/04/2005, 21h09