MySql : Encore des requetes imbriquées

jmj
Petit nouveau ! | 1 Messages

22 oct. 2013, 15:44

Désolé, mais j'ai toujours du mal avec les requêtes imbriquées.

Soit la table "Obj", contenant -entres autres - un "Obj_Label" et un "Obj_MsysObjectID".
"Obj_Label" est de la forme abcxyzt, avec abc le code d'une ville ( p.ex parh123 => par = Paris)
"Obj_MsysObjectID" est un code indentifiant l'Objet.

Je cherche à connaitre, par ville, combien d'objets de chaques sortes sont présents :
En Perl cela donne :

Code : Tout sélectionner

# Etablir la liste des villes: $sth0 = $dbh -> prepare ( "SELECT substring(Obj_Label,1,3), COUNT(*) FROM Obj GROUP BY substring(Obj_Label,1,3) ORDER BY Obj_Label " ) or die "cannot prepare SQL statement : $DBI::errstr\n'"; $sth0 -> execute(); # Puis pour chaque ville : while (@Value = $sth0 -> fetchrow_array() ) { $i = 1; $j = 0; %NbOf = (); $sth = $dbh -> prepare ( "SELECT (Obj_MsysObjectID), COUNT(*) FROM Obj WHERE `Obj_Label` LIKE '$Value[0]%' GROUP BY Obj_MsysObjectID ORDER BY Obj_MsysObjectID " ) or die "cannot prepare SQL statement : $DBI::errstr\n'"; $sth-> execute(); $NbRows = $sth -> rows; while (@ID = $sth->fetchrow_array() ) { $NbOf{$ID[0]} = $ID[1]; $j += $ID[1]; +++ suite du traitement +++ }
Questions : peut on combiner ces deux requetes ( mon problème vient du fait de l'utilisation d'un LIKE avec un % ( pas une égalité stricte) que je ne sais pas exprimer dans une requête imbriquée)

Merci
JMJ