par
jmj » 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
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]# 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 +++
}[/code]
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