MySql : Encore des requetes imbriquées
Posté : 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 :
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
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 +++
}Merci
JMJ