Requete avec jointure sans doublons
Titine-60
-
Titine-60 -
Titine-60 -
Bonjour à tout ^^.
Je bute sur une requête qui pourtant ne m'a l'air pas si compliqué que cela...
J'ai trois tables avec comme id commun l'id client:
- 1 client : id, id_client
- 1 de remises : id, type_remise, montant_remise, #id_client
- 1 d'escomptes: id, type_escompte, montant_escompte, #id_client
Le problème est que si dans ma table il y a 2 remises pour le même client et 1 escompte du fait de ma requête la ligne escompte sera doublée.
Impossible de grouper l' escompte...
Mon collègue qui s'occupe du SQL étant en vacance si une âme charitable pouvait m'aider ça serai vraiment sympa
Je bute sur une requête qui pourtant ne m'a l'air pas si compliqué que cela...
J'ai trois tables avec comme id commun l'id client:
- 1 client : id, id_client
- 1 de remises : id, type_remise, montant_remise, #id_client
- 1 d'escomptes: id, type_escompte, montant_escompte, #id_client
Le problème est que si dans ma table il y a 2 remises pour le même client et 1 escompte du fait de ma requête la ligne escompte sera doublée.
Impossible de grouper l' escompte...
Mon collègue qui s'occupe du SQL étant en vacance si une âme charitable pouvait m'aider ça serai vraiment sympa
A voir également:
- Requete sql sans doublon
- Doublon photo - Guide
- Supprimer doublon excel - Guide
- Requete sql pix ✓ - Forum MySQL
- Logiciel sql - Télécharger - Bases de données
- Tirage au sort excel aléatoire sans doublon - Forum LibreOffice / OpenOffice
9 réponses
Sous quelle forme souhaites-tu obtenir le résultat ?
Peux-tu fournir un exemple et le résultat que tu souhaites obtenir à partir de cet exemple ?
Peux-tu fournir un exemple et le résultat que tu souhaites obtenir à partir de cet exemple ?
Bonjour,
Oui bien sur ^^
J'ai ceci :
LAVISSE - remise - 2014-02-15 - 4 €
LAVISSE - remise - 2014-02-23 - 8 €
LAVISSE - remise - 2014-02-28 - 7 €
LAVISSE - escompte - 2014-01-15 - 15 €
LAVISSE - escompte - 2014-01-15 - 15 €
LAVISSE - escompte - 2014-01-15 - 15 €
DUPONT - remise - 2014-02-02 - 2 €
DUPONT - remise - 2014-02-14 - 5 €
DUPONT - escompte - 2014-02-23 - 20 €
DUPONT - escompte - 2014-02-23 - 20 €
Je voudrais grouper les escomptes pour éviter qu'il me remette la ligne d'escompte à chaque fois qu'il y a une ligne de remise:
LAVISSE - remise - 2014-02-15 - 4 €
LAVISSE - remise - 2014-02-23 - 8 €
LAVISSE - remise - 2014-02-28 - 8 €
LAVISSE - escompte - 2014-01-15 - 15 €
DUPONT - remise - 2014-02-02 - 2 €
DUPONT - remise - 2014-02-14 - 5 €
DUPONT - escompte - 2014-02-23 - 20 €
Oui bien sur ^^
J'ai ceci :
LAVISSE - remise - 2014-02-15 - 4 €
LAVISSE - remise - 2014-02-23 - 8 €
LAVISSE - remise - 2014-02-28 - 7 €
LAVISSE - escompte - 2014-01-15 - 15 €
LAVISSE - escompte - 2014-01-15 - 15 €
LAVISSE - escompte - 2014-01-15 - 15 €
DUPONT - remise - 2014-02-02 - 2 €
DUPONT - remise - 2014-02-14 - 5 €
DUPONT - escompte - 2014-02-23 - 20 €
DUPONT - escompte - 2014-02-23 - 20 €
Je voudrais grouper les escomptes pour éviter qu'il me remette la ligne d'escompte à chaque fois qu'il y a une ligne de remise:
LAVISSE - remise - 2014-02-15 - 4 €
LAVISSE - remise - 2014-02-23 - 8 €
LAVISSE - remise - 2014-02-28 - 8 €
LAVISSE - escompte - 2014-01-15 - 15 €
DUPONT - remise - 2014-02-02 - 2 €
DUPONT - remise - 2014-02-14 - 5 €
DUPONT - escompte - 2014-02-23 - 20 €
Alors si j'ai bien compris, je te propose la requête suivante :
select id_client, type, date, montant
from client
inner join (
select id, 'remise' as type, date, montant from remises
union
select id, 'escompte' as type, date, montant from escomptes
) as data using(id)
select id_client, type, date, montant
from client
inner join (
select id, 'remise' as type, date, montant from remises
union
select id, 'escompte' as type, date, montant from escomptes
) as data using(id)
Merci pour ton aide mais ça ne fonctionne pas sniff.
mais c'est ma faute je ne t'ai pas dit que c'était du PHP.
De plus Je ne comprend pas le "AS DATA USING(id)" peux tu m'expliquer ?
et je ne vois pas ou est fait le lien entre client.id et remise.id_client et escompte.id_client
mais c'est ma faute je ne t'ai pas dit que c'était du PHP.
De plus Je ne comprend pas le "AS DATA USING(id)" peux tu m'expliquer ?
et je ne vois pas ou est fait le lien entre client.id et remise.id_client et escompte.id_client
"Ça ne fonctionne pas" : c'est à dire ?
Tu as dit que ton collègue qui s'occupe du SQL est en vacances, j'en ai conclu que tu avais besoin d'une requête SQL, non ? À toi de l'intégrer dans ton php :)
"AS DATA USING(id)" : signifie que je crée une sous-requête que je nomme "data", que j'utilise dans une jointure avec la table "client" à partir de la colonne "id".
"et je ne vois pas ou est fait le lien entre client.id et remise.id_client et escompte.id_client" : Ce lien se fait donc à partir de cette fameuse jointure. :)
Tu as dit que ton collègue qui s'occupe du SQL est en vacances, j'en ai conclu que tu avais besoin d'une requête SQL, non ? À toi de l'intégrer dans ton php :)
"AS DATA USING(id)" : signifie que je crée une sous-requête que je nomme "data", que j'utilise dans une jointure avec la table "client" à partir de la colonne "id".
"et je ne vois pas ou est fait le lien entre client.id et remise.id_client et escompte.id_client" : Ce lien se fait donc à partir de cette fameuse jointure. :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ma requête PDO me sort une erreur...
Mais merci pour les explications en effet moi, à part les requête de base avec jointure simple... mais je n'aime pas recopier bêtement d'où mes questions ^^...
Je regarde ça demain au boulot et je tiens au jus et merci
Mais merci pour les explications en effet moi, à part les requête de base avec jointure simple... mais je n'aime pas recopier bêtement d'où mes questions ^^...
Je regarde ça demain au boulot et je tiens au jus et merci
Salut,
Dans la structure de table que tu as cité, tu ne mentionnes à aucun moment la présence de la colonne "date", alors que dans les exemple la date existe ?!
Peux tu réecrire la structure des tables sous ce format :
Nom de la Table (id, colonne_1, colonne_2, ..., #colonne_i)
Dans la structure de table que tu as cité, tu ne mentionnes à aucun moment la présence de la colonne "date", alors que dans les exemple la date existe ?!
Peux tu réecrire la structure des tables sous ce format :
Nom de la Table (id, colonne_1, colonne_2, ..., #colonne_i)
Salut,
Oui je n'ai pas mis les vrais tables car j'aimerai comprendre et éviter de "pomper" vulgairement. (flokocha désolé si je t'ai fait bosser pour rien mais ta requête sera similaire a ce que je veux faire).
Les vrais tables se nomment : vendeurs, remises et escomptes
dans vendeurs : je n'ai besoin que du numéro de région du vendeur et surtout je ne peux pas la modifier
vendeurs (id,matricule_vendeur, region_vendeur)
remise(id, #matricule_vendeur, date, type, px_reel, px_vendu)
escompte(id, #matricule_vendeur, date, type, montant)
Encore merci pour votre aide
Oui je n'ai pas mis les vrais tables car j'aimerai comprendre et éviter de "pomper" vulgairement. (flokocha désolé si je t'ai fait bosser pour rien mais ta requête sera similaire a ce que je veux faire).
Les vrais tables se nomment : vendeurs, remises et escomptes
dans vendeurs : je n'ai besoin que du numéro de région du vendeur et surtout je ne peux pas la modifier
vendeurs (id,matricule_vendeur, region_vendeur)
remise(id, #matricule_vendeur, date, type, px_reel, px_vendu)
escompte(id, #matricule_vendeur, date, type, montant)
Encore merci pour votre aide
Non pas du tout je veux juste afficher les résultats comme ceci :
région - matricule - remise - 2014-02-02 - px_vendu - px_réel
région - matricule - remise - 2014-02-14 - px_vendu - px_réel
région - matricule - escompte - 2014-02-23 - montant
Trier par matricule vendeur et date
Bien sur il peut y avoir 2 escomptes par jour pour le même vendeur mais le soucis c'est que si j'ai 3 remises dans le mois pour les même vendeurs j'aurais tout les escomptes triplés...
région - matricule - remise - 2014-02-02 - px_vendu - px_réel
région - matricule - remise - 2014-02-14 - px_vendu - px_réel
région - matricule - escompte - 2014-02-23 - montant
Trier par matricule vendeur et date
Bien sur il peut y avoir 2 escomptes par jour pour le même vendeur mais le soucis c'est que si j'ai 3 remises dans le mois pour les même vendeurs j'aurais tout les escomptes triplés...