Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/07/2011, 11h35   #1
Membre régulier
 
Inscription : janvier 2004
Messages : 440
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 440
Points : 89
Points : 89
Par défaut Récupérer un seul enregistrement en fonction d'une colonne

Bonjour,

J'aimerais savoir comment récupérer un seul enregistrement par colonne.
Je m'explique je récupère grâce à une requête tous les postes des agences.
J'aimerais récupérer un seul poste par agence. Comment faire?

Voici ma requête:

Code :
1
2
3
4
5
6
7
 
SELECT `P`.*, `A`.*, `C`.* 
FROM `postes` AS `P` 
RIGHT JOIN `agences` AS `A` ON P.agence_id = A.agence_id 
RIGHT JOIN `clients` AS `C` ON P.cli_id = C.cli_id 
WHERE (P.poste_pubSpace= 0) 
ORDER BY `P`.`poste_date_update` DESC
Merci d'avance.

Sheira.
sheira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 13h25   #2
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
La question est "quel poste de chaque agence voulez vous récupérer ?"

Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 13h49   #3
Membre régulier
 
Inscription : janvier 2004
Messages : 440
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 440
Points : 89
Points : 89
Le premier qui a .
sheira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 14h03   #4
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
groupez par agence (GROUP BY) et filtrez via votre critère et la date

Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 14h05   #5
Membre régulier
 
Inscription : janvier 2004
Messages : 440
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 440
Points : 89
Points : 89
un groupby agence P.agence_id

et le filtre je fais ça comment?
sheira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 14h09   #6
Membre habitué
 
Avatar de tfc3146
 
Homme Robert Labrousse
Développeur décisionnel
Inscription : février 2009
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Robert Labrousse
Localisation : France

Informations professionnelles :
Activité : Développeur décisionnel
Secteur : Boutique - Magasin

Informations forums :
Inscription : février 2009
Messages : 79
Points : 134
Points : 134
Bonjour,

Citation:
Le premier qui a

partP.poste_pubSpace= 0
Oui d'accord mais selon quel critère c'est "le premier" ?
__________________
Citation:
C'est en faisant n'importe quoi qu'on devient n'importe qui
Si un message vous a aidé, n'hésitez pas à mettre +1
tfc3146 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 14h12   #7
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
@tfc3146 apparement, la date...

Donc utilisez un where et regardez du coté de la clause HAVING
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 14h26   #8
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 440
Points : 6 440
Question posée de nombreuses fois.
Voir, par exemple, la discussion suivante : http://www.developpez.net/forums/d10...ture-distinct/
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 15h05   #9
Membre régulier
 
Inscription : janvier 2004
Messages : 440
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 440
Points : 89
Points : 89
Ce serait ça dans mon cas?

Code :
1
2
3
4
5
6
7
SELECT `P`.*, `A`.*, `C`.* 
FROM `postes` AS `P` 
RIGHT JOIN `agences` AS `A` ON P.agence_id = A.agence_id 
RIGHT JOIN `clients` AS `C` ON P.cli_id = C.cli_id 
WHERE (P.poste_pubSpace= 0) 
groupby P.agence_id
HAVING `P`.`poste_date_update` <= now()
sheira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 15h31   #10
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Saluton,
Si l'on pouvait éviter de relancer les hostilités de la Guerre des étoiles.
Merci.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 15h42   #11
Membre habitué
 
Avatar de tfc3146
 
Homme Robert Labrousse
Développeur décisionnel
Inscription : février 2009
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Robert Labrousse
Localisation : France

Informations professionnelles :
Activité : Développeur décisionnel
Secteur : Boutique - Magasin

Informations forums :
Inscription : février 2009
Messages : 79
Points : 134
Points : 134
A condition que pour un même id_agence, il ne puisse y avoir qu'une seule date <= à la date du jour.
Sinon, le SGBD chosira à votre place, et dans ce cas il faut utiliser MIN().
__________________
Citation:
C'est en faisant n'importe quoi qu'on devient n'importe qui
Si un message vous a aidé, n'hésitez pas à mettre +1
tfc3146 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 15h47   #12
Membre du Club
 
Inscription : août 2009
Messages : 66
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 66
Points : 69
Points : 69
Citation:
Envoyé par sheira Voir le message
Ce serait ça dans mon cas?

Code :
1
2
3
4
5
6
7
SELECT `P`.*, `A`.*, `C`.* 
FROM `postes` AS `P` 
RIGHT JOIN `agences` AS `A` ON P.agence_id = A.agence_id 
RIGHT JOIN `clients` AS `C` ON P.cli_id = C.cli_id 
WHERE (P.poste_pubSpace= 0) 
groupby P.agence_id
HAVING `P`.`poste_date_update` <= now()
Tu as déjà une erreur de syntaxe : "groupby" au lieu de "group by". De plus l'utilisation des * n'est pas permis dans le cadre d'un group by.
NicoD. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 15h52   #13
Membre habitué
 
Avatar de tfc3146
 
Homme Robert Labrousse
Développeur décisionnel
Inscription : février 2009
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Robert Labrousse
Localisation : France

Informations professionnelles :
Activité : Développeur décisionnel
Secteur : Boutique - Magasin

Informations forums :
Inscription : février 2009
Messages : 79
Points : 134
Points : 134
Code :
1
2
3
4
5
6
7
8
 
SELECT P.agence_id, P.poste
FROM `postes` AS `P` 
RIGHT JOIN `agences` AS `A` ON P.agence_id = A.agence_id 
RIGHT JOIN `clients` AS `C` ON P.cli_id = C.cli_id 
WHERE (P.poste_pubSpace= 0) 
GROUP BY  P.agence_id, P.poste
HAVING `P`.`poste_date_update` <= now()
devrait davantage correspondre à vos besoins.
__________________
Citation:
C'est en faisant n'importe quoi qu'on devient n'importe qui
Si un message vous a aidé, n'hésitez pas à mettre +1
tfc3146 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 12h08   #14
Membre régulier
 
Inscription : janvier 2004
Messages : 440
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 440
Points : 89
Points : 89
Merci!!
sheira est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h03.


 
 
 
 
Partenaires

Hébergement Web