more than one row returned by a subquery used as an expression

more than one row returned by a subquery used as an expression - SQL/NoSQL - Programmation

Marsh Posté le 23-04-2009 à 16:40:22    

j'ai cette erreur que j'utilise la requête suivante :
 
 

Citation :

SELECT * FROM journal where id_j = (select id_journal FROM publication where id_auteur= (select id_a FROM auteur where nom_a like '$requete' ));


 
comment pourrai-je effectuer une même requête en passant outre cette erreur ?
 
merci


---------------

Reply

Marsh Posté le 23-04-2009 à 16:40:22   

Reply

Marsh Posté le 23-04-2009 à 17:13:25    

Je pense que tu devrais utiliser "DISTINCT" dans tes sous-requêtes. Par contre je suis pas sûre que ça résolve ton problème.
 
select DISTINCT id_a FROM auteur where nom_a like '$requete'

Reply

Marsh Posté le 23-04-2009 à 17:37:27    

ou bien select max(...).
 
Mais peut-être qu'il faudrait construire la requêtre autrement.
Par exemple :

SELECT * FROM journal, publication, auteur
 WHERE journal.id_j = publication.id_journal
  AND publication.id_auteur = auteur.id_a
  AND auteur.nom_a like '$requete' ));


 
 

Reply

Marsh Posté le 24-04-2009 à 11:00:21    

merci pour vos aides !!
 
 
en fait j'ai divisé la requete en deux en stockant l'id dans une variable apres la premiere requete, et ca fonctionne.


---------------

Reply

Marsh Posté le 24-04-2009 à 23:00:15    

sinon, les jointures c'est pas mal non plus :o

Code :
  1. SELECT *
  2. FROM journal INNER JOIN publication ON journal.id_j = publication.id_journal
  3.             INNER JOIN auteur ON publication.id_auteur = auteur.id_a
  4. WHERE auteur.nom_a LIKE '$requete'


Message édité par Harkonnen le 24-04-2009 à 23:00:59

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-04-2009 à 12:27:33    

sinon suffisant de remplacer = par IN.  
 
SELECT * FROM journal where id_j IN (select id_journal FROM publication where id_auteur IN (select id_a FROM auteur where nom_a like '$requete' ));


Message édité par moi23372 le 25-04-2009 à 12:28:52

---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed