fredo35m
Messages postés244Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention12 juillet 2006
-
7 oct. 2005 à 11:52
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 2015
-
7 oct. 2005 à 19:33
Bonjour,
j'aimerais savoir comment faire pour requeter sur plusieurs tables et bases, je m'explique :
BASE 1:
Requête 1 : Sélection des CODES COMMUNES selon critère utilisateur sur la TABLE 1
Requete 2 : Sélection des CODES ACTIVITES selon critère utilisateur sur la TABLE 2
(jusque là ça va)
BASE 2
Requête 3 : Sélection des CODES ACTIVITES et des CODES COMMUNES dans ma table 3 selon les 2 premières requetes afin d'obtenir les EFFECTIFS PAR COMMUNE ET ACTIVITES.
Merci d'avance pour votre aide !!!!
Voici une partie de mon code (je sais pas si c'est très utile mais bon..)
Requête 1 :
//SELECTION DU TERRITOIRE SOUHAITE ET LA LISTE DU TERRITOIRE
$query_req = mysql_query("select distinct $table_serveur.TYPE_ELT,
$table_serveur.CODE_GROUPE,
$table_serveur.CODE_REGROUPT as CODE_REGROUPT,
$tabled_serveur.NOM_REGROUPT,
$tabled_serveur.CODE_REGROUPT as CODE_REGROUPTb
from $table_serveur, $tabled_serveur
where $table_serveur.CODE_REGROUPT='$territoire' and
$tabled_serveur.CODE_REGROUPT=$table_serveur.TYPE_ELT and
$table_serveur.CODE_GROUPE='$CODE_GROUPEB'");
if (!$query_req)
{
die('Requête A invalide : ' . mysql_error());
}
if ($query_req)
{ echo "OK REQ A";}
while ($datareq = mysql_fetch_array($query_req))
{
$query_reqb=mysql_query("select CODE_ELT, CODE_GROUPE from $tableb_serveur where $tableb_serveur.CODE_GROUPE='$datareq[CODE_GROUPE]'");
}
if (!$query_reqb)
{ die('Requête B invalide : ' . mysql_error()); exit();}
if ($query_reqb)
{ echo "OK REQ B";}
Requête 2 :
//SELECTION DES CODES NAF CORRESPONDANT A LA DEMANDE DU CODE
$query_reqnaf = mysql_query(' select NAF700, '.$VALEUR_CD.', '.$act.'
from '.$tablec_serveur.'
where '.$act.'='.$VALEUR_CD.' ');
if (!$query_reqnaf)
{
die('Requête A NAF invalide : ' . mysql_error());
}
if ($query_reqnaf)
{ echo "OK REQ A NAF";}
Requete 3 (pas bonne) :
//SELECTION DANS BASE 2
if (!mysql_select_db($database_local, $local))
{
echo "ERREUR BASE LOCAL";
exit();
}
while ($datareqb = mysql_fetch_array($query_reqb))
{
$query_reqnafb=mysql_query('select distinct ANNEE, NAF700, DECOM, EMP_T_TOTA
from '.$table_local.'
where DECOM='.$datareqb[CODE_ELT].'
GROUP BY NAF700, ANNEE
ORDER BY NAF700, ANNEE');
}
while ($datareqnafb = mysql_fetch_array($query_reqnafb))
{
$query_reqnafc=mysql_query('select distinct ANNEE, NAF700, DECOM, SUM(EMP_T_TOTA) as somme
from '.$table_local.'
where NAF700="'.$datareqnafb[NAF700].'"
GROUP BY NAF700, ANNEE
ORDER BY NAF700, ANNEE');
}
fredo35m
Messages postés244Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention12 juillet 2006 7 oct. 2005 à 14:29
j'ai essayé un truc comme ça et ça marche pas non plus !!!! J'ai beau tourner dans tous les sens j'y arrive pas !!!
Quelqu'un a une idée pour ça ??? merci je désespère !!!
while ($datareqb = mysql_fetch_array($query_reqb))
{
while ($datareqnaf = mysql_fetch_array($query_reqnaf))
{
$query_reqnafb=mysql_query('select ANNEE, NAF700, DECOM, SUM(EMP_T_TOTA) as somme
from '.$table_local.'
where NAF700="'.$datareqnaf[NAF700].'" and DECOM='.$datareqb[CODE_ELT].'
GROUP BY NAF700, ANNEE
ORDER BY NAF700, ANNEE');
}
}
davwart
Messages postés855Date d'inscriptionmardi 19 novembre 2002StatutMembreDernière intervention28 juillet 20091 7 oct. 2005 à 14:46
Fred...
pourrais tu essayer de simplifier ton pb et donner un exemple "bete"?
parce que là, perso, ça me donne mal à la tete rien que de lire ton truc ;)
-------------------------------------
Les ordinateurs, plus on s'en sert moins, moins ça a de chance de mal marcher. [Les Shadoks]
fredo35m
Messages postés244Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention12 juillet 2006 7 oct. 2005 à 15:02
Dac !!!
Alors en faite, j'ai 3 tables.
dans la 1ere table j'ai 2 vairables : CODE_COMMUNE et CODE_GROUPE
1ère requete : sélection des CODE_COMMUNE correspondant à un CODE_GROUPE particulier (donné par l'utilisateur)
-> ça ça marche
$query_reqb=mysql_query("select CODE_ELT, CODE_GROUPE from $tableb_serveur where $tableb_serveur.CODE_GROUPE='$datareq[CODE_GROUPE]'");
dans une 2ème table j'ai 2 variables : CODE_ACTIVITE et GROUPE_ACTIVITE
2ème requète : sélection des CODE_ACTIVITE correspondant à un GROUPE d'aCTIVITE particulier (donné par l'utilisateur)
-> ça ça marche.
$query_reqnaf = mysql_query(' select NAF700, '.$VALEUR_CD.', '.$act.' from '.$tablec_serveur.' where '.$act.'='.$VALEUR_CD.' ');
dans une 3ème table j'ai 3 variables : CODE_COMMUNE, CODE_ACTIVITE, EFFECTIF
3ème requête : je souhaite pouvoir effectuer une requête sur cette table en fonction des résultats des 2ères requêtes afin d'en retenir une somme d'effectif. C'est à dire que je souhaite sélectionner les CODE_COMMUNE et les CODE_ACTIVITE dans ma table 3 correspondant aux 2 premières requetes.
j'ai essayé un truc du style là mais ça ne marche pas :
while ($datareqb = mysql_fetch_array($query_reqb))
{
while ($datareqnaf = mysql_fetch_array($query_reqnaf))
{
$query_reqnafb=mysql_query('select ANNEE, NAF700, DECOM, SUM(EMP_T_TOTA) as somme
from '.$table_local.'
where NAF700="'.$datareqnaf[NAF700].'" and DECOM='.$datareqb[CODE_ELT].'
GROUP BY NAF700, ANNEE
ORDER BY NAF700, ANNEE');
}
}
davwart
Messages postés855Date d'inscriptionmardi 19 novembre 2002StatutMembreDernière intervention28 juillet 20091 7 oct. 2005 à 15:26
pour les probleme de changement de base, rajoute le nom de tes base de données devant tes tables
-------------------------------------
Les ordinateurs, plus on s'en sert moins, moins ça a de chance de mal marcher. [Les Shadoks]
fredo35m
Messages postés244Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention12 juillet 2006 7 oct. 2005 à 15:28
oui en fait en écrivant ma "précision" je me suis aperçu de la technique à adopter mais est-il possible de faire un select sur deux bases en même temps ?? car mon problème est là désormais je sais pas comment lui dire que telle table se trouve sur telle base etc ...!!
merci pour ta réponse en tout cas !!! ça commence à me débloquer !!!!
davwart
Messages postés855Date d'inscriptionmardi 19 novembre 2002StatutMembreDernière intervention28 juillet 20091 7 oct. 2005 à 16:06
oui oui, mets le nom de ta db devant tes tables
-------------------------------------
Les ordinateurs, plus on s'en sert moins, moins ça a de chance de mal marcher. [Les Shadoks]
$unedic.$table_unedic.DECOM,
$unedic.$table_unedic.NAF700,
$unedic.$table_unedic.ANNEE,
SUM($unedic.$table_unedic.EMP_T_TOTA) as somme
FROM $cnx.$table_groupes, $cnx.$table_regroupt, $cnx.$table_det_grp, $cnx.$table_naf, $unedic.$table_unedic
WHERE $cnx.$table_groupes.CODE_REGROUPT='$territoire' and
$cnx.$table_groupes.TYPE_ELT=$cnx.$table_regroupt.CODE_REGROUPT and
$cnx.$table_groupes.CODE_GROUPE=$cnx.$table_det_grp.CODE_GROUPE and
$cnx.$table_groupes.CODE_GROUPE='$CODE_GROUPEB' and
$unedic.$table_unedic.DECOM=$cnx.$table_det_grp.CODE_ELT and
$cnx.$table_naf.NAF60='$VALEUR_CD' and
$unedic.$table_unedic.NAF700=$cnx.$table_naf.NAF700
GROUP BY $unedic.$table_unedic.NAF700, $unedic.$table_unedic.ANNEE
ORDER BY $unedic.$table_unedic.NAF700, $unedic.$table_unedic.ANNEE
");
J'ai un problème avec la partie en gras, si je l'enlève ça marche bien sauf qu'il ne fait pas le lien entre la NAF700 de la table unedic et la NAF700 de la table naf. (=CODE_ACTIVITE), mais quand je le mets ça ne marche plus.
Ce qui m'étonne c'est que la partie qui est en rouge reviens à la même chose (=CODE_COMMUNE), et là il fait bien la correspondance entre les 2 tables, c'est à dire que le code commune est le même.
As tu une idée de où cela peut venir??
Désolé de t'embeter encore mais j'y suis presque (je pense et il me reste plus que ce soucis !!!)
merci encore !!!
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 7 oct. 2005 à 19:33
40 variables pour rien la !
Au lieu de faire une variable pour une base, autant la renommer via sql.
genre :
"SELECT u1.x, u1.y, u2.z, u2.r FROM nom_base1 u1, nom_base2 u2 WHERE u1.x = u2.x";
Parce que moi, quand je lis : $cnx.$table_regroupt.NOM_REGROUPT
Tu m'excuses, mais je comprend rien !
Une variable, pour bien être utilisée, doit être déclaré correctement.
Hors, tu utilises des $cnx, $table_regroupt sorti de nul part, et ca me
donne même pas envie de regarder.
J'imagine même pas la tête de ta DB quand elle doit lire un SELECT comme ca ;)