Auteur |
Message |
Inekman
Accro à Web-IG
Sexe:
Messages: 236
Localisation: Nancy
|
Posté le:
Ven 19 Aoû 2005 - 00:43 |
|
Salut tout le monde,
Je dois faire une requête simple au premier abors mais qui me pose un problème au second (ché pas si ça se dit)
Pour ce faire, mettons-nous en situation ^^
- J'ai une table SALARIE avec tous les champs traditionnel
- J'ai une table VACUITE qui enregistre les mois pendant lesquels les salariés sont librent composée de v_salarie (id du salarié) et v_mois (num du mois de l'année)
But du jeu, dans un formulaire php, l'utilisateur va cocher des mois et en validant le formulaire, la liste des salariés librent ces mois là doit s'afficher.
Voilà où j'en suis. Mon code php me génère une requête du genre :
SELECT s_nom, s_prenom FROM salarie, vacuite WHERE v_mois IN (4, 5, 6) AND s_id = v_salarie GROUP BY s_id ORDER BY s_nom;
A priori pour moi ça veut dire, récupère-moi les identifiants des salariés dont le mois de vacuité se trouve dans 4, 5, 6.
Bon ça marche mais y'a un problème, il me sort aussi les salariés librent avec chacune des combinaisons des 3 mois. Ce que je voudrai, c'est qu'il me sort que les salariés qui sont librent ces 3 mois et pas uniquement l'un des 3 ou 2 des 3. Vous voyez de quoi je parle ?
Aidez-moi siouplé |
_________________ ¤ signature ¤ |
|
|
|
N'oubliez pas de vous inscrire à la communauté pour participer. Si vous êtes déjà membre, connectez-vous pour faire disparaître ce bandeau publicitaire. |
mrmabo
Accro à Web-IG
Sexe:
Messages: 226
Localisation: Amiens
|
Posté le:
Ven 19 Aoû 2005 - 03:24 |
|
SELECT s_nom, s_prenom FROM salarie, vacuite WHERE v_mois = 4 and v_mois = 5 ans v_mois = 6 AND s_id = v_salarie GROUP BY s_id ORDER BY s_nom;
not sure but try it |
|
|
|
|
Vincent
Webmaster
Sexe:
Messages: 5584
Localisation: Montpellier
|
Posté le:
Ven 19 Aoû 2005 - 07:53 |
|
mrmabo a écrit: |
SELECT s_nom, s_prenom FROM salarie, vacuite WHERE v_mois = 4 and v_mois = 5 ans v_mois = 6 AND s_id = v_salarie GROUP BY s_id ORDER BY s_nom;
not sure but try it |
Non je ne pense pas, car v_mois ne peut pas être égal à la fois à 4, 5 et 6. |
_________________ Hey les amis, pensez à suivre @webig sur Twitter, et pourquoi pas me suivre moi @cybervince |
|
|
|
queskispace
Accro à Web-IG
Sexe:
Messages: 194
Localisation: En ce moment, derrière mon pc
|
Posté le:
Ven 19 Aoû 2005 - 14:30 |
|
Essaye ca, mais c'est un peux plus compliqué :
SELECT s_nom, s_prenom
FROM salarie, vacuite
WHERE s_id IN
(SELECT v_salarie
WHERE v_mois = 4)
AND s_id IN
(SELECT v_salarie
WHERE v_mois = 5)
AND s_id IN
(SELECT v_salarie
WHERE v_mois = 6)
GROUP BY s_id
ORDER BY s_nom; |
_________________ Tout a une fin sauf le saucisson qui en a deux |
|
|
|
silvia1212
Forumeur fréquent
Sexe:
Messages: 56
Localisation: MILLAU (12)
|
Posté le:
Ven 19 Aoû 2005 - 14:59 |
|
queskispace a écrit: |
Essaye ca, mais c'est un peux plus compliqué :
SELECT s_nom, s_prenom
FROM salarie, vacuite
WHERE s_id IN
(SELECT v_salarie
WHERE v_mois = 4)
AND s_id IN
(SELECT v_salarie
WHERE v_mois = 5)
AND s_id IN
(SELECT v_salarie
WHERE v_mois = 6)
GROUP BY s_id
ORDER BY s_nom; |
Je crois que ca déconne un pe qd on fé plusieur AND sur le meme champs.... Mais bon, a tester... Si tu le fais dis moi si ca marche stp....
Sinon, tu pe faire ca :
SELECT s_nom, s_prenom
FROM salarie, vacuite
WHERE s_id IN (SELECT v_salarie
FROM .......
WHERE v_mois = 4
AND s_id IN (SELECT v_salarie
FROM .......
WHERE v_mois = 5
AND s_id IN (SELECT v_salarie
FROM .......
WHERE v_mois = 6) ) )
GROUP BY s_id
ORDER BY s_nom; |
|
|
|
|
h0taru
Forumeur fréquent
Messages: 90
|
Posté le:
Ven 19 Aoû 2005 - 15:18 |
|
Vincent a écrit: |
mrmabo a écrit: |
SELECT s_nom, s_prenom FROM salarie, vacuite WHERE v_mois = 4 and v_mois = 5 ans v_mois = 6 AND s_id = v_salarie GROUP BY s_id ORDER BY s_nom;
not sure but try it |
Non je ne pense pas, car v_mois ne peut pas être égal à la fois à 4, 5 et 6. |
d'apres les infos données, il y a plusieurs lignes par salariés car on a qu'une colonne v_mois
pas exemple :
- v_salarie: toto et v_mois : 4
- v_salarie: toto et v_mois : 5
....
le code de queskispace devrait fonctionner en ajoutant s_id = v_salarie |
_________________
|
|
|
|
mrmabo
Accro à Web-IG
Sexe:
Messages: 226
Localisation: Amiens
|
Posté le:
Ven 19 Aoû 2005 - 15:50 |
|
been deja suivant la version de mysql il peut pas faire d'imbrications !
voici une solution sans imbrication testée sour mysql
SELECT s_id, s_nom
FROM salarie, vacuite
WHERE s_id = v_salarie
AND v_mois
IN ( 4, 5, 6 )
GROUP BY s_id
HAVING count( s_id ) =3
jpense pas que des explications soient necessaire
sinon
Vincent a écrit: |
mrmabo a écrit: |
SELECT s_nom, s_prenom FROM salarie, vacuite WHERE v_mois = 4 and v_mois = 5 ans v_mois = 6 AND s_id = v_salarie GROUP BY s_id ORDER BY s_nom;
not sure but try it |
Non je ne pense pas, car v_mois ne peut pas être égal à la fois à 4, 5 et 6. |
t'as vu l'heure de ma rep ? pi j'avais bu :p |
|
|
|
|
Inekman
Accro à Web-IG
Sexe:
Messages: 236
Localisation: Nancy
|
Posté le:
Ven 19 Aoû 2005 - 21:10 |
|
ah yes merci beaucoup les gars, mes recherchent m'ont amené à faire un truc similaire. Je vais les tester toutes pour voir laquelle me sort un résultat satisfaisant ^^
Merci la communauté, ça fait plaisir, big up à vous tous |
_________________ ¤ signature ¤ |
|
|
|
|