Aide requete SQL

Bonjour,
je debute en langage sql et j’ai rencontrer un problème de requêtes. J’aimerais effectuer un tri de ce genre :

[URL=https://imageshack.com/][IMG]http://img178.imageshack.us/img178/1815/imaqs2.th.png[/IMG][/URL]

Cependant je n’arrive pas à ecrire sa requêtes. J’ai essayer :SELECT reference, etat
FROM table
WHERE etat=’X ‘
AND etat=’y’

Mais cela ne correspond pas à ce que je cherche puisqu’il selectionne tout les x et les y.
Merci d’avance pour les aides.
Configuration: Windows XP
Internet Explorer 6.0

7 réponses

  1. Salut,
    Peut-être :
     
    SELECT t1.reference, t1.etat 
    FROM table t1, table t2
    WHERE 
    t1.reference = t2.reference
    AND t1.etat='X' AND t2.etat='Y'
    
    0
    1. Bonjour

      Essaye ceci :

      select reference,etat from table
      where reference in (select reference from table where etat = 'X') AND
      reference in (select reference from table where etat = 'Y')

      Bonne journée.
      0
      1. J'ai testé les 2 méthodes,
        dans la première je suis obligé de créer une 2eme table pour que la requête fonctionne, mais cela ne correspond pas à ce que j'attend car elle n'affiche que l'etat 'X' (je souhaiterai qu'elle affiche aussi l'etat 'Y') elle a cependant bien fait le tri.
        La deuxieme hélas ne fonctionne pas car il y a une erreur de syntaxe
        0
        1. salut
          essai ca

          select reference,etat
          from table_nom
          order by reference,etat
          bonne chance
          0
          1. ah j avais oblier la condition
            il faut taper
            select reference,etat
            from table_name t1;t2
            where t1.reference=t2.reference
            order by reference,etat
            et c'est tout
            0
            1. SELECT a.REFERENCE, a.ETAT
              FROM TABLE a
              WHERE a.ETAT = 'X'
              AND EXISTS (SELECT * FROM TABLE b WHERE a.REFERENCE = b.REFERENCE AND b.ETAT = 'Y')
              UNION
              SELECT c.REFERENCE, c.ETAT
              FROM TABLE c
              WHERE c.ETAT = 'Y'
              AND EXISTS (SELECT * FROM TABLE d WHERE c.REFERENCE = d.REFERENCE AND d.ETAT = 'X')
              ORDER BY REFERENCE, ETAT
              ;

              CQFD -- a noter que tu n'utilises qu'une table. Ne t'amuses pas à en créer plusieurs --
              0
              1. merci je vais testé ça d'ici peu
                0