Gérer le forum:  Aide  •  Rechercher  •  Liste des Membres  •  Groupes d'utilisateurs   •  S'enregistrer  •  Profil  •  Se connecter pour vérifier ses messages privés  •  Connexion 
 SQL tordu inside Voir le sujet suivant
Voir le sujet précédent
Poster un nouveau sujetRépondre au sujet
Auteur Message
Inekman
Accro à Web-IG
Accro à Web-IG


Post-BTS
Sexe: Sexe:Masculin
Messages: 236
Localisation: Nancy

MessagePosté le: Ven 19 Aoû 2005 - 00:43 Répondre en citantRevenir en haut

Salut tout le monde,

Je dois faire une requête simple au premier abors mais qui me pose un problème au second Mr. Green (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é Rolling Eyes

_________________
¤ signature ¤
Voir le profil de l'utilisateurEnvoyer un message privéVisiter le site web du posteur

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
Accro à Web-IG


Post-BTS
Sexe: Sexe:Masculin
Messages: 226
Localisation: Amiens

MessagePosté le: Ven 19 Aoû 2005 - 03:24 Répondre en citantRevenir en haut

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
Voir le profil de l'utilisateurEnvoyer un message privé
Vincent
Webmaster
Webmaster


Post-BTS
Sexe: Sexe:Masculin
Messages: 5584
Localisation: Montpellier

MessagePosté le: Ven 19 Aoû 2005 - 07:53 Répondre en citantRevenir en haut

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 Wink
Voir le profil de l'utilisateurEnvoyer un message privéVisiter le site web du posteurMSN MessengerNuméro ICQ
queskispace
Accro à Web-IG
Accro à Web-IG


BTS IG - Option développeur Diplômé
Sexe: Sexe:Masculin
Messages: 194
Localisation: En ce moment, derrière mon pc

MessagePosté le: Ven 19 Aoû 2005 - 14:30 Répondre en citantRevenir en haut

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
Voir le profil de l'utilisateurEnvoyer un message privéMSN Messenger
silvia1212
Forumeur fréquent
Forumeur fréquent


BTS IG - Option développeur Diplômé
Sexe: Sexe:Féminin
Messages: 56
Localisation: MILLAU (12)

MessagePosté le: Ven 19 Aoû 2005 - 14:59 Répondre en citantRevenir en haut

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;
Voir le profil de l'utilisateurEnvoyer un message privéEnvoyer l'e-mailMSN Messenger
h0taru
Forumeur fréquent
Forumeur fréquent


BTS IG - Option réseau 1ère année

Messages: 90

MessagePosté le: Ven 19 Aoû 2005 - 15:18 Répondre en citantRevenir en haut

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

_________________
Image
Voir le profil de l'utilisateurEnvoyer un message privé
mrmabo
Accro à Web-IG
Accro à Web-IG


Post-BTS
Sexe: Sexe:Masculin
Messages: 226
Localisation: Amiens

MessagePosté le: Ven 19 Aoû 2005 - 15:50 Répondre en citantRevenir en haut

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 Very Happy


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
Voir le profil de l'utilisateurEnvoyer un message privé
Inekman
Accro à Web-IG
Accro à Web-IG


Post-BTS
Sexe: Sexe:Masculin
Messages: 236
Localisation: Nancy

MessagePosté le: Ven 19 Aoû 2005 - 21:10 Répondre en citantRevenir en haut

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 Cool

_________________
¤ signature ¤
Voir le profil de l'utilisateurEnvoyer un message privéVisiter le site web du posteur
Montrer les messages depuis:      
Poster un nouveau sujetRépondre au sujet
    Sujets complémentaires :
 Sauter vers:   



Voir le sujet suivant
Voir le sujet précédent
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum