Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/08/2011, 10h50   #1
Invité de passage
 
Femme
Étudiant
Inscription : avril 2011
Messages : 32
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 32
Points : 0
Points : 0
Par défaut Ecrire une requête telle que un champ prenne deux valeurs en même temps

Bonjour,

Je dois écrire une requête qui vérifie les conditions suivants:
1/ oldString=Triage + field='Group' et en même temps newString<> NULL +field='assignee'
Je veux dire quand j'écris field='Group' and field='assignee' que la requête va retourner toujours null puisque ce n'est pas possible d'avoir un même champ avec deux valeurs. Mais dans mon cas, dans un premier temps, le champ field contient group, ensuite il va contenir assignee (c'est une table qui enregistre un historique)

Ma requête :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SELECT TIMEDIFF(a.created,b.created) ,a.groupid1,a.issueName
FROM
    (SELECT g.created, g.issueid AS groupid1 ,ji.pkey AS issueName
        FROM   changegroup g
        JOIN   changeitem ci ON (ci.groupid = g.id)
        JOIN   jiraissue ji ON (ji.id = g.issueid)
        JOIN   project p ON (p.id = ji.project)
        JOIN   priority pr ON (pr.id = ji.priority)
        WHERE  ci.FIELD = 'Group'
        AND  ci.oldString = 'Triage' 
        AND  ci.FIELD='assignee'
        AND ci.newString <> NULL
        AND  p.pname = 'Test'
        AND pr.pname='P1'
        AND  ji.created BETWEEN '2011-08-11 14:01:00' AND  '2011-08-12 14:11:00'
    ) a 
LEFT JOIN   (
        SELECT ji.created, ji.id AS groupid2 ,ji.pkey AS issueName
        FROM   jiraissue ji
        JOIN   changegroup g ON (g.issueid = ji.id)
        JOIN   project p ON (p.id = ji.project)
        WHERE  p.pname = 'Test'
          AND  ji.created BETWEEN '2011-08-11 14:01:00' AND '2011-08-12 14:11:00' 
    ) b ON (a.groupid1 = b.groupid2 AND a.issueName = b.issueName);

Rq :La table qui contient les valeurs de oldString and newString et field est en pièce jointe

Merci bien
Images attachées
Type de fichier : jpg table changeitem.JPG (33,2 Ko, 7 affichages)
ramoucha23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 11h00   #2
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
Première chose : relisez votre message avant de l'envoyer (pour faire simple, je ne comprend rien)


Et surtout, vérifiez comment doivent s’écrire les conditions utilisant le NULL.
Ce n'est pas = ou <>, etc mais IS ou NOT IS
dehorter olivier est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 15h54   #3
Membre éclairé
 
Inscription : juin 2005
Messages : 1 056
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 1 056
Points : 329
Points : 329
Envoyer un message via AIM à jadey Envoyer un message via MSN à jadey Envoyer un message via Yahoo à jadey
Olivier a raison, on ne comprend malheureusement pas grand chose à ton énoncé, et ça ne donne pas vraiment envi de s'y pencher. Néanmoins je pense saisir à la lecture de
Citation:
1/ oldString=Triage + field='Group' et en même temps newString<> NULL +field='assignee'
que ce que tu veux faire c'est soit:
1- Retourner l'intersection des enregistrements de deux requêtes, où la première vérifie:
Code :
(oldString=Triage AND FIELD='Group')
et la deuxième qui vérifie elle:
Code :
(newString IS NOT NULL AND FIELD='assignee')
Autrement dit:
Code :
1
2
WHERE ...
((oldString=Triage AND FIELD='Group') AND (newString IS NOT NULL AND FIELD='assignee'))
2- Retourner les enregistrement qui vérifient la condition
Code :
1
2
WHERE ...
((oldString=Triage AND FIELD='Group') OR (newString IS NOT NULL AND FIELD='assignee'))
jadey est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h15.


 
 
 
 
Partenaires

Hébergement Web