MySql 4.0 - Imbrication de Select avec In()

MySql 4.0 - Imbrication de Select avec In() - SQL/NoSQL - Programmation

Marsh Posté le 05-11-2008 à 11:03:21    

Bonjour, j'ai des problèmes avec l'imbrication des requêtes
ici il s'agit de traiter des doublons ( dans l'imbrication, puis d'ajouter des filtres )

select id,EMAIL,champsups from table where EMAIL IN(select EMAIL from table group by EMAIL having count(id)>1) AND ..


#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'IN ( (select EMAIL
 
Someone got an Idea ?  :??:  
L'idée de base est de faire un group, mais ce dernier fait perdre les information individuelle de chaque record ..


Message édité par grosbin le 05-11-2008 à 13:24:56

---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 05-11-2008 à 11:03:21   

Reply

Marsh Posté le 05-11-2008 à 11:27:27    

ben t'as mis le count(id) dans la sous-requête alors qu'il n'y a pas de id dans le select de ta sous-requête. Ca viendrait pas de ça?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 05-11-2008 à 11:31:40    

Négatif, le having count est là, justement pour ne pas retourner le champ et directement retourner un array avec les valeurs de Mails, présents plus d'une fois dans la base
Sinon il reste plus qu'à les retourner en php dans une chaine et construire un seconde requete ( mais c'est pas bien )


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 05-11-2008 à 11:45:55    

il se mélangerait pas les pinceaux entre les champs/tables portant le même nom. Utilises un alias pour ta sous requête :

Code :
  1. select id,EMAIL,champsups from table where EMAIL IN(select t1.EMAIL from table t1 group by t1.EMAIL having count(id)>1) AND ..



---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 05-11-2008 à 11:57:14    

non plus :(
si je remplace le contenu du in par les résultats de la requete imbriquée, ça passe ..

Code :
  1. select a.id from table a where a.id=ANY(select b.id from table b where b.id>17000)


ça non plus .. je suis sous MySQL: 5.0.32 1and1 ..


Message édité par grosbin le 05-11-2008 à 12:26:26

---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 05-11-2008 à 12:09:27    

Code :
  1. select id,EMAIL,champsups
  2. from table
  3. where EMAIL IN(select EMAIL from (select EMAIL,count(id) from table group by EMAIL having count(id)>1)) AND ..

?

Reply

Marsh Posté le 05-11-2008 à 12:14:59    

tjrs erreur de syntaxe que je vois pas :(


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 05-11-2008 à 12:26:32    

ça n'existe pas un ide pour mysql ou on peut taper sa requête et ou il dit ou on se goure dans sa requête?
 
parce que la c'est comme programmer en notepad quoi...

Reply

Marsh Posté le 05-11-2008 à 12:42:42    

Mauvaise Nouvelle : ça marche en localhost sur la 5.0.27-community-log
mais échoue sur 1and1 en version 4.0.27-standard
 soit : comment construire cette requete en mysql version 4.0 pour un operateur qui existe depuis la 4.1 ?


Message édité par grosbin le 05-11-2008 à 13:21:27

---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 06-11-2008 à 09:41:26    

mysql 4.0 ne supporte pas les sous-requêtes. POur ça, faut passer par une table temporaire (create temporary table).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

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