begin process at 2012 05 31 02:16:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Probleme requete group by


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme requete group by

lundi 31 mars 2008 à 11:59:10 | Probleme requete group by

lowkey

Salut à tous !

Voici ma requete :

SELECT t.id_artisan FROM cp_artisan, travail_artisan t INNER JOIN travail_artisan t1 ON t1.id_artisan = t.id_artisan AND t1.id_prestation=4 INNER JOIN travail_artisan t2 ON t2.id_artisan = t.id_artisan AND t2.id_prestation=102 WHERE t.id_prestation=19 limit 0, 20

Elle marche tres bien!

Mais si je rajoute un GROUP BY :

SELECT t.id_artisan FROM  travail_artisan t INNER JOIN travail_artisan t1 ON t1.id_artisan = t.id_artisan AND t1.id_prestation=4 INNER JOIN travail_artisan t2 ON t2.id_artisan = t.id_artisan AND t2.id_prestation=102 WHERE t.id_prestation=19 GROUP BY t.id_artisan limit 0, 20

La requete n'aboutie pas. En la testant sous phpmyadmin, le serveur 'shutdown' parce qu'elle prend trop de temps...

Quelqu'un a une idée du pourquoi et comment y remédier ?

Merci !!


lowkey
lundi 31 mars 2008 à 15:22:08 | Re : Probleme requete group by

MasterCent

Salut,

Dans ta requête :
 quelle est la relation avec cp_artisan ?
 sauf erreur, t1.id_prestation=4 ne devrait pas venir dans les Where ?
 pourquoi appeler 3 fois la table travail_artisan ?
 qu'ont en commun les prestations 4, 102 et 19 ? // ... WHERE id_prestation in ( 4 , 102 , 19 )

+ Un peu de commentaire autour du code ..

Bon boulot !
 



 

lundi 31 mars 2008 à 20:28:44 | Re : Probleme requete group by

malalam

Administrateur CodeS-SourceS
Hello,

t'as tjrs pas fini ton bin's ? ;-)

Encore une fois, tu devrais montrer la structure de tes tables.
Et dire ce que tu cherches à faire.

Autre chose : elles sont très remplies, tes tables ?

lundi 31 mars 2008 à 23:30:02 | Re : Probleme requete group by

lowkey

Lol ,Wé, toujours et encore le meme merdier... Je suis pas abitué aux inner/left join donc je galere... J'ai appris avec Where table1.foreign_key=table2.primary_key don cfaut que je me remette un peu à jour...

Enfin, pour malalam, la structure de la table :

CREATE TABLE `travail_artisan` (
  `id_artisan` int(11) NOT NULL default '0',
  `id_prestation` int(11) NOT NULL default '0',
  `niveau` int(11) NOT NULL default '1',
  PRIMARY KEY  (`id_artisan`,`id_prestation`)
) ;

Dans ma premiere requete : erreur de ma part, cp_client n'a rien à faire là...

Mes tables sont bien remplies : 3'134'266 entrées

Je cherche toujours a faire la meme chose, trouver une liste d'artisans qui 'pratique' la liste ENTIERE de prestations qui lui est donnée.
Je me suis servi de ce que tu m'avais donné malalam, et ça marche du tonnerre ! Du moins si je ne met pas de group by...

Dans ce cas, je ne sais pas si un group by est necessaire, mais simple curiosité...

Voila voila...


lowkey
mardi 1 avril 2008 à 09:10:22 | Re : Probleme requete group by

MasterCent

Salut lowkey,

Si je comprends bien ta structure, tu as trois tables en jeux :
une table des artisans,
une table des prestations, 
une table travail_artisan qui établirait une relation NN entre les artisans et les prestations ?

Ceci va t il t'inspirrer ?

-- Le nombre de prestations par artisan
Select id_artisan , count(id_prestation) as nbr_prestation
from travail_artisan
group by id_artisan
having nbr_prestation = ( select 109 )
order by nbr_prestation

-- A la place de ( select 109 ), tu peux faire appel à une requete qui compte le nombre de prestations, que tu mets entre parenthèses !
having nbr_prestation = ( Select count(id_prestation) from table_des_prestations )

MAIS : je ne sais pas si tu as un index qui garantit  l'unicité du couple id_artisan , id_prestation, car sinon cette manière de faire ne sera pas fiable !

Je te conseil de lire de l'information sur les bases de données ( par ex [ Lien ] ) , petit à petit.

Bon boulot !
mardi 1 avril 2008 à 13:02:27 | Re : Probleme requete group by

lowkey

Salut MasterCent !

Non, je n'ai qu'une seule table : celle dont j'ai donné la structure.

Exemple des donnes :

id_artisan | id_prestation | niveau
13           | 4                  | 1
13           | 5                  | 1
13           | 6                  | 1
12           | 4                  | 1
12           | 5                  | 1
16           | 4                  | 1

Ben je veux les artisans qui ont les prestation 4 ET 5 ET 6 donc, dans ce cas, UNIQUEMENT l'artisan 13


lowkey


Cette discussion est classée dans : t1, id, travail, prestation, artisan


Répondre à ce message

Sujets en rapport avec ce message

Petite question concernant mysql_fetch_object [ par ceeno ] Bonjour,Je souhaiterais savoir une petite chose, prenons le code :$sql="SELECT t1.ID,t2.ID FROM t1,t2 WHERE t1.ID = 10 AND t1.ID = t2.ID";$res=mysql_q Problème de requête [IMPORTANT] [ par pcgpegase ] Bonjour à tous,Ca serait vraiment super si vous pouviez m'aider !Comment faire pour qu'on récupère un enregistrement qui est NULL, je m'explique :Je f pb de boucles for et while [ par tontoclic ] Bonjour,Je développe un site en PHP-MySQL pour site de numérisation et SIG (Systèmes d'Information Géographiques)J'ai un pb d'affichage des données da problème de LEFT JOIN en MySQL5 [ par kiki2sirom ] Bonjour à tous,J'ai un souci avec certaines de mes requêtes avec MySQL5 (chez moi)En MySQL4 je n'ai pas de problème (au bureau)Explication :    1) déj Trouver tous les chemins possibles [ par lowkey ] Salut !!Je n'arrive pas a trouver le meilleur moyen de trouver tous les chemins question-reponse-question-reponse-....... de ma base de données.Voici Requête mysql [ par Aelindor ] Bonsoir,j'ai un problème très embêtant avec ma requête, donc voici la tête:[CODE]SELECT c.read_by, u.id_user, GROUP_CONCAT(DISTINCT u.login SEPARATOR php sql [ par kelm_by ] salut tous le monde je ne sais pas ouest l'erreur dans ce code??????????,merci d'avance$result = mysql_query("SELECT * FROM table ORDER BY n ASC LIMIT intégration "do while" dans "array" [ par rduvrac ] Salut J'ai ce code qui fonctionne, il me donne une liste de nombre pris dans ma base : ================================================ do { $incremen catalogue [ par gaston_gb ] salut à tous, je ve realiser un catalogue ou je recupere les images et les references des produit depuis la base de données, je suis parvenu à affiche script site [ par killeur ] Bonjour voila je suis débutant en php et je suis en train de codé mon propre site mai voila je block sur un script voici le script


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales