Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec 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 22/02/2008, 17h33   #1
Membre du Club
 
Inscription : septembre 2006
Messages : 184
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 184
Points : 43
Points : 43
Par défaut [Débutant] requête complexe DISTINCT

Bonjour,

Alors je souhaite en fait dans la table "matable" faire une requête un peu particulière qui irait chercher un champ a DISTINCT et un champ b tant que a est DISTINCT.

J'ai essayé :

Code :
$query = "SELECT b, a FROM matable WHERE a IN (SELECT DISTINCT a FROM matable)";
Mais au final le distinct n'est pas obtenu, je me retrouve avec des a redondants.
Une idée?

Merci
taffMan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2008, 17h41   #2
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 413
Points : 6 413
Bonjour,

Peux-tu donner un exemple de ce que tu souhaites, avec des valeurs de a et b ?
Qu'entends-tu par "un champ a DISTINCT et un champ b tant que a est DISTINCT" ?

ced
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2008, 17h57   #3
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Que dirais-tu de :

Code :
1
2
3
SELECT a, GROUP_CONCAT(b)
FROM matable
GROUP BY a
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2008, 18h05   #4
Membre du Club
 
Inscription : septembre 2006
Messages : 184
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 184
Points : 43
Points : 43
Bonjour,

alors soit un champ prix et un champ id
Je ne veut pas qu'il y ait de redondance de prix (c'est pour un menu déroulant généré dynamiquement) alors le DISTINCT s'applique au prix par contre pour chaque prix je souhaite un id correspondant pour faire une autre requête derrière
taffMan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2008, 18h06   #5
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Citation:
Envoyé par taffMan Voir le message
Bonjour,

alors soit un champ prix et un champ id
Je ne veut pas qu'il y ait de redondance de prix (c'est pour un menu déroulant généré dynamiquement) alors le DISTINCT s'applique au prix par contre pour chaque prix je souhaite un id correspondant pour faire une autre requête derrière
Et quand plusieurs id correspondent au même prix ?
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2008, 18h07   #6
Membre du Club
 
Inscription : septembre 2006
Messages : 184
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 184
Points : 43
Points : 43
impossible puisqu'il y a un id unique par enregistrement
taffMan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2008, 23h29   #7
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Supposons que tu aies les articles suivants :

ID Nom Prix
1 Coca 2
2 Champagne 20
3 Pepsi 2

Le prix 2 correspond à deux ID, 1 et 3.
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2008, 15h13   #8
Membre du Club
 
Inscription : septembre 2006
Messages : 184
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 184
Points : 43
Points : 43
Ce n'est pas grave puisque il y aurait un distinct sur le prix donc un id maximum est concerné par prix
taffMan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2008, 15h17   #9
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Citation:
Envoyé par taffMan Voir le message
... donc un id maximum ...
Que ne le disais-tu plus tôt !

Le DISTINCT ne s'applique pas colonne par colonne, mais sur l'ensemble des valeurs du SELECT. Ce que tu veux, c'est un regroupement :

Code :
1
2
3
4
 
SELECT prix, MAX(id) 
FROM matable
GROUP BY prix
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2008, 15h55   #10
Membre du Club
 
Inscription : septembre 2006
Messages : 184
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 184
Points : 43
Points : 43
Citation:
Le DISTINCT ne s'applique pas colonne par colonne, mais sur l'ensemble des valeurs du SELECT
Je l'ignorais.
Merci je vais tenter avec ta syntaxe
taffMan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2008, 14h47   #11
Membre du Club
 
Inscription : septembre 2006
Messages : 184
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 184
Points : 43
Points : 43
Merci ça marche
taffMan 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 03h31.


 
 
 
 
Partenaires

Hébergement Web