Requete sql

Résolu
mariline285 Messages postés 76 Date d'inscription   Statut Membre Dernière intervention   -  
 DORA -
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   Statut Membre Dernière intervention   87
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   87
 
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   Statut Membre Dernière intervention  
 
ça marche pas, il reconnait pas compteur.
0
Vins974
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   87
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   87
 
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   Statut Membre Dernière intervention   > nicdev Messages postés 233 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   87
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   87
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   87 > mariline285 Messages postés 76 Date d'inscription   Statut Membre Dernière intervention  
 
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
DORA
 
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