Requete sql

Résolu/Fermé
mariline285 Messages postés 76 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 février 2011 - 22 janv. 2009 à 11:38
 DORA - 28 mai 2009 à 12:25
Bonjour,
J'ai un petit probleme avec ma requete.

Je vous explique le principe: une personne peut avoir plusieurs numero ET un numero peut etre utilisé par plusieurs personnes
.
Voici un exemple d'affichage:
numero_ticket | nom
001 | pers_1
001 | pers_2
002 | pers_2

J'aimerai afficher les lignes dont le numero_ticket est associé a une seule et unique personne.
Ce qui correspond d'apres mon affichage:
numero_ticket | nom
002 | pers_2

Voici ma requete mais elle ne marche pas!!!!!!!!
SELECT NUM_TICKET,OPERATEUR
FROM `tps_reel`
HAVING count(num_ticket)>1

QUELQU UN POURRAIT IL M AIDER SVP?????
MERCI

9 réponses

nicdev Messages postés 233 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 décembre 2010 87
22 janv. 2009 à 11:49
Tu recherche quoi?

Les Tickets pour 1 personnes en particulier?

SELECT NUM_TICKET,OPERATEUR
FROM `tps_reel`
WHERE OPERATEUR = `pers_2`
0
mariline285 Messages postés 76 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 février 2011
22 janv. 2009 à 11:51
Non, je recherche les tickets associés a une seule et unique personne.
T as une idée?
0
nicdev Messages postés 233 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 décembre 2010 87
22 janv. 2009 à 11:53
Essaye ca

SELECT NUM_TICKET, OPERATEUR, COUNT(OPERATEUR) AS COMPTEUR
FROM `tps_reel`
WHERE COMPTEUR=1
0
mariline285 Messages postés 76 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 février 2011
22 janv. 2009 à 11:58
ça marche pas, il reconnait pas compteur.
0
Tu crées un programme ?? quel langage ??? je pourrais t'aider si c'est du PHP ou VB..
0
mariline285 Messages postés 76 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 février 2011
22 janv. 2009 à 12:00
Non c est pas un programme, je veux faire une modification dans la base de données sous easy php.
0
nicdev Messages postés 233 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 décembre 2010 87
22 janv. 2009 à 12:09
Dsl j'ai tapé trop rapidement et j'avais pas testé :

SELECT NUM_TICKET, OPERATEUR
FROM `tps_reel`
GROUP BY `NUM_TICKET`
HAVING COUNT( `OPERATEUR` ) =1
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mariline285 Messages postés 76 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 février 2011
22 janv. 2009 à 12:28
Oui ça marche merci!!!!!!!!!!!!!!!!!
Et tu serais comment afficher les tickets qui sont associés a une unique et seule personne mais meme les doublons?

par exemple:
num_ticket = 001 et operateur = pers_1
num_ticket = 001 et operateur = pers_1
0
nicdev Messages postés 233 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 décembre 2010 87
22 janv. 2009 à 12:47
SELECT NUM_TICKET, OPERATEUR , COUNT( `OPERATEUR` )
FROM `tps_reel`
GROUP BY `NUM_TICKET`,`OPERATEUR`
HAVING COUNT( `OPERATEUR` ) >1

Il te sortira une ligne avec le nombre de ligne identiques (au moins 2 lignes pour apparaitre)

Mais si tu as une clef primaire sur 'NUM_TICKET+OPERATEUR' alors tu devrai ne pas avoir de lignes.
0
mariline285 Messages postés 76 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 février 2011 > nicdev Messages postés 233 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 décembre 2010
22 janv. 2009 à 14:02
Pour revenir a mon 1er prb, la requete etait celle ci:

SELECT NUM_TICKET, OPERATEUR
FROM `tps_reel`
GROUP BY `NUM_TICKET`
HAVING COUNT( `OPERATEUR` ) =1
ORDER BY NUM_TICKET

Si je veux afficher tous les tickets associés uniquement à l operateur toto ça ne marche pas, je ne comprends pas.
voici ma requete:

SELECT NUM_TICKET, OPERATEUR
FROM `tps_reel`
where operateur='toto'
GROUP BY `NUM_TICKET`
HAVING COUNT( `OPERATEUR` ) =1
ORDER BY NUM_TICKET
0
nicdev Messages postés 233 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 décembre 2010 87
22 janv. 2009 à 14:40
La requête :

SELECT NUM_TICKET, OPERATEUR
FROM `tps_reel`
WHERE operateur = 'toto'
GROUP BY `NUM_TICKET`
HAVING COUNT( `OPERATEUR` ) =1
ORDER BY NUM_TICKET

est correcte.

Pour vérifier exécute cette requête :

SELECT NUM_TICKET, OPERATEUR,COUNT( `OPERATEUR`)
FROM `tps_reel`
WHERE operateur = 'toto'
GROUP BY `NUM_TICKET`
ORDER BY NUM_TICKET

le type de résultat (ma db de test pour ton souci)

NUM_TICKET OPERATEUR COUNT( `OPERATEUR`)
001 OPE2 2
002 OPE2 1

Si tu n'as pas de 1 dans le count cela explique pourquoi tu n'as aucun résultat.

Sinon si ton champs OPERATEUR est un CHAR et non un VARCHAR il faut completer avec des espaces :

Utilisateur toto
en CHAR(15) = 'toto '
en VARCHAR(15) = 'toto'

Note la différence avec les espaces en plus pour le CHAR.
0
mariline285 Messages postés 76 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 février 2011
22 janv. 2009 à 14:48
J'ai reussi à afficher les tickets associés uniquement à une seule personne en faisant une requête imbriquée, voici ma requête:

SELECT NUM_TICKET, OPERATEUR
FROM `tps_reel`
WHERE `NUM_TICKET`
IN
(
SELECT num_ticket
FROM tps_reel
WHERE operateur = 'toto'
)
GROUP BY `NUM_TICKET`
HAVING COUNT( `OPERATEUR` ) =1
ORDER BY NUM_TICKET

Néanmoins, dans certains cas je peux avoir un ticket associé a toto et un meme ticket associé à toto => ce qui revient a dire que le ticket est asocié à toto. C'est cette partie là qui ne fonctionne pas dans la requete.
Dois je faire une nouvelle requete ou modifier celle ci?
0
nicdev Messages postés 233 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 décembre 2010 87
22 janv. 2009 à 14:54
Peux tu me donner un exemple de ce que tu as dans ta table et le résultat que tu attends?
0
mariline285 Messages postés 76 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 février 2011
22 janv. 2009 à 15:02
voici un exemple d affichage:

num_ticket nom

001 toto
001 titi
002 toto
003 tata
003 tata

Resultat de laa requete:
002 toto

Resultat attendue:
002 toto
003 tata
car le ticket 003 est associé UNIQUEMENT à tata
et le ticket 002 est associé UNIQUEMENT à toto.
0
nicdev Messages postés 233 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 décembre 2010 87 > mariline285 Messages postés 76 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 19 février 2011
22 janv. 2009 à 15:39
SELECT NUM_TICKET, OPERATEUR
FROM (
SELECT DISTINCT *
FROM `tps_reel`
) tps_reel
GROUP BY `NUM_TICKET`
HAVING COUNT( `OPERATEUR` ) =1
ORDER BY NUM_TICKET

Explication :

SELECT DISTINCT * FROM `tps_reel`

enlève les doublons.
0
svp ou la faut dans cette requet et sou requet (

SELECT dbo.EMP.Matr, dbo.EMP.NomE, dbo.EMP.poste, dbo.PARTICIPATION.codeP
FROM dbo.PARTICIPATION INNER JOIN
dbo.EMP ON dbo.PARTICIPATION.Matr = dbo.EMP.Matr
where dbo.EMP.Matr in(
SELECT Matr, COUNT(codeP) as nbr
FROM dbo.PARTICIPATION
GROUP BY Matr
HAVING COUNT(codeP) >1)
0