[MySQL] Jointures externes et dernier enregistrement
Posté : 09 juin 2006, 12:24
Bonjour,
Je suis sous MYSQL 4
Les experts SQL présents sur ce forum, et tout autre cerveau disponible est le bienvenu.
J'ai une application avec des fiches pour chaque personne, et je peux ajouter des augmentations à chaque personne. Autant que je veux.
Pour un export des données (impression) je souhaite n'avoir qu'une augmentation par personne, la dernière insérée.
Voici ce que j'ai dans ma base :
table profil (id, nom, prenom, ...)
table salaire (id, id_profil, augmentation_type)
En plus, je stocke le pays, le poste et autres données dans des tables externes.
Voici ce que je veux obtenir :
Mr DUPONT Jean, France, directeur, augmentation salariale
Mr LAFAILLE Marc, France, commercial, commission
Mr BLOBLO Paul, France, assistant, voiture de fonction
Ma requete actuelle :
SELECT p.id AS id_profil,
p.nom AS NOM,
p.prenom AS PRENOM,
poste.nom as POSTE,
pays.libelle as PAYS,
sal.aug_type AS AUG_TYPE,
MAX( sal.id_salaire ) AS max_id_salaire
FROM profil AS p
LEFT OUTER JOIN postes AS poste ON poste.id = p.poste_id
RIGHT OUTER JOIN salaire_manager AS sal ON sal.id_profil = p.id AND sal.id_salaire = MAX(sal.id_salaire )
LEFT OUTER JOIN pays AS pays ON pays.id = p.pays
WHERE p.anciennete_groupe_date >= '0-0-0'
AND p.anciennete_groupe_date <= '2006-06-09'
GROUP BY p.id, id_salaire
ORDER BY p.id ASC
Ce qu'elle retourne :
Les nom, prénom, postes, tout va bien, le max_id_salaire aussi, mais le aug_type, ça ne colle pas : ce n'est pas celui du max_id_salaire.
Comment faire pour avoir l'augmentation type correspondant à l'id_max_augmentation ?
Je suis sous MYSQL 4
Les experts SQL présents sur ce forum, et tout autre cerveau disponible est le bienvenu.
J'ai une application avec des fiches pour chaque personne, et je peux ajouter des augmentations à chaque personne. Autant que je veux.
Pour un export des données (impression) je souhaite n'avoir qu'une augmentation par personne, la dernière insérée.
Voici ce que j'ai dans ma base :
table profil (id, nom, prenom, ...)
table salaire (id, id_profil, augmentation_type)
En plus, je stocke le pays, le poste et autres données dans des tables externes.
Voici ce que je veux obtenir :
Mr DUPONT Jean, France, directeur, augmentation salariale
Mr LAFAILLE Marc, France, commercial, commission
Mr BLOBLO Paul, France, assistant, voiture de fonction
Ma requete actuelle :
SELECT p.id AS id_profil,
p.nom AS NOM,
p.prenom AS PRENOM,
poste.nom as POSTE,
pays.libelle as PAYS,
sal.aug_type AS AUG_TYPE,
MAX( sal.id_salaire ) AS max_id_salaire
FROM profil AS p
LEFT OUTER JOIN postes AS poste ON poste.id = p.poste_id
RIGHT OUTER JOIN salaire_manager AS sal ON sal.id_profil = p.id AND sal.id_salaire = MAX(sal.id_salaire )
LEFT OUTER JOIN pays AS pays ON pays.id = p.pays
WHERE p.anciennete_groupe_date >= '0-0-0'
AND p.anciennete_groupe_date <= '2006-06-09'
GROUP BY p.id, id_salaire
ORDER BY p.id ASC
Ce qu'elle retourne :
Les nom, prénom, postes, tout va bien, le max_id_salaire aussi, mais le aug_type, ça ne colle pas : ce n'est pas celui du max_id_salaire.
Comment faire pour avoir l'augmentation type correspondant à l'id_max_augmentation ?