Page 1 sur 1

requêtes SELECT imbriquées

Posté : 14 févr. 2013, 09:55
par tapi
Bonjour,
Je souhaiterai imbriquer deux select, l'un pour récupérer des indicatifs qui correspondent à un critère dans la table T1 et l'autre pour récupérer des noms (dans la table T2) correspondant aux indicatifs récupérés précédemment.
Cette syntaxe fonction mais est extrêmement trop longue. Merci de votre aide.
$query0 = mysql_query("SELECT DISTINCT lib_ag, ind_agence FROM structure WHERE ind_agence IN (SELECT DISTINCT AGENC FROM m41000 WHERE DRR='$indicatif' and LIBELLE_ACTION='$libelle') ORDER by DGA") or die (mysql_error());

Re: requêtes SELECT imbriquées

Posté : 14 févr. 2013, 11:32
par nicolas
Et en faisant une jointure ce ne serait pas plus simple et plus rapide ?

Re: requêtes SELECT imbriquées

Posté : 14 févr. 2013, 12:20
par tapi
Merci de la réponse,
Je pensais qu'une jointure ne concernait que les éléments commun ou pas de deux tables. Là , il s'agit de récupérer le libellé d'un indicatif dans la table 1 si et seulement si cet indicatif figure dans la table 2 mais avec un critère.
Table 1 Table 2
indicatif Libellé Indicatif Critère
A toto A X
B tata B Y
C titi C X


Dans cet exemple je ne veux récupérer que toto et titi.

Re: requêtes SELECT imbriquées

Posté : 14 févr. 2013, 12:38
par yann18
bonjour,
les 2 tables ayant un champ commun(ind_agence enfin si j'ai bien compris) une jointure interne ferait le job

Re: requêtes SELECT imbriquées

Posté : 14 févr. 2013, 12:39
par nicolas

Re: requêtes SELECT imbriquées

Posté : 16 févr. 2013, 16:01
par tapi
Merci pour ces réponses,
je me suis donc tourné vers le principe de jointure et j'ai écris ceci

Code : Tout sélectionner

$query = mysql_query("SELECT structure.lib_dga, structure.dga, m41000.DGAA, sum(NB_TOT), sum(NB_RDV), sum(NB_TRA) FROM structure LEFT JOIN m41000 ON structure.dga=m41000.DGAA WHERE m41000.CCIBLE=0 and m41000.LIBELLE_ACTION='$libelle' ORDER BY structure.dga") or die (mysql_error());
Ca a l'air de fonctionner , mais dès que je rajoute le nom de la table devant sum... j'obtiens un message d'erreur.
Auriez-vous une solution ?
Merci

Re: requêtes SELECT imbriquées

Posté : 16 févr. 2013, 16:21
par nicolas
Qu'est-ce que tu veux rajouter et pourquoi ?

Re: requêtes SELECT imbriquées

Posté : 16 févr. 2013, 17:44
par tapi
eh bien je souhaiterai récupérer les sommes de TOT, RDV et de TRA. J'ai peut être oublié "GROUP by DGAA".

Re: requêtes SELECT imbriquées

Posté : 16 févr. 2013, 17:45
par yann18
suis pas sûr d'avoir tout compris.tu ne peux pas préfixer la fonction sum par le nom de la table car elle n'est pas une colonne de la table.toutefois tu peux donner des alias à chacune de tes expressions qui figurent dans le SELECT:
$query = mysql_query("SELECT structure.lib_dga, structure.dga, m41000.DGAA, sum(NB_TOT) as somme_tot, sum(NB_RDV) as somme_rdv, sum(NB_TRA) as som_tra
FROM structure
LEFT JOIN m41000
ON structure.dga=m41000.DGAA
WHERE m41000.CCIBLE=0 and m41000.LIBELLE_ACTION='".$libelle."'
ORDER BY structure.dga") or die (mysql_error());

Re: requêtes SELECT imbriquées

Posté : 20 févr. 2013, 09:10
par tapi
Merci de cette aide,
en fin de compte je m'en suis tiré en préfixant la fonction à l’intérieur de la parenthèse:
sum(m41000.NB_TOT)