Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Maria-DB] Requête plus courte possible ?

    14 mai 2018 à 18:24:46

    Bonjour,

    j'ai une question très simple. J'ai une requête qui est la suivante :

    select distinct o1.vendeur
    from
      (
        select ID_objet, proposition_achat.acheteur, objet.vendeur
        from proposition_achat, objet
        where proposition_achat.accepte = true
              and objet.ID = ID_objet
      ) as o1,
      (
        select ID_objet, proposition_achat.acheteur, objet.vendeur
        from proposition_achat, objet
        where proposition_achat.accepte = true
              and objet.ID = ID_objet
    
      ) as o2
    where o1.vendeur = o2.acheteur
          and o1.acheteur = o2.vendeur
    

    Comme vous voyez, les sous-tables o1 et o2 sont les mêmes. Est-ce possible de limiter ce copier-coller ? J'ai essayé ceci :

    (
        select ID_objet, proposition_achat.acheteur, objet.vendeur
        from proposition_achat, objet
        where proposition_achat.accepte = true
              and objet.ID = ID_objet
    
      ) as o1, o2

    Mais la DBMS n'accepte pas.

    • Partager sur Facebook
    • Partager sur Twitter
      15 mai 2018 à 8:54:26

      Bonjour,

      Il me semble que l'on pourrait déjà simplifier la requête avec seulement des jointures :

      SELECT DISTINCT O1.vendeur
      FROM
      	proposition_achat PA1
      		INNER JOIN objet O1
      			ON PA1.ID_objet = O1.ID
      		INNER JOIN proposition_achat PA2
      			ON O1.vendeur = PA2.acheteur
      		INNER JOIN objet O2
      			ON PA2.acheteur = O2.vendeur
      WHERE
      	PA1.accepte = true
      	AND PA2.accepte = true

      Mais je ne comprends absolument pas ce que tu souhaites obtenir avec cette requête ... Peux-tu dire avec une phrase ce que dois faire la requête, exemple : "Je veux la liste des vendeurs distincts qui ont vendu un objet à un acheteur qui a leur a aussi déjà vendu un objet".

      -
      Edité par Benzouye 15 mai 2018 à 8:57:00

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        15 mai 2018 à 12:43:49

        Oui désolé, je n'ai pas mis de requêtes car je ne pensais pas que c'était utile vu que ma question portait plus sur de la syntaxe.

        La requête est la suivante : "Les vendeurs ayant vendu et acheté à la même personne."

        Normalement, ça devait être une requête très simple car dans notre database, nous avons choisi d'avoir une table objet avec comme attribut, un vendeur, un statut vendu ou pas (booléen) et un acheteur. Le souci est qu'on a dû importé des données et dans celles-ci, les objets n'avaient pas de statut, ni même des acheteurs. Ces dernières étaient présentes dans les propositions d'achats (elles aussi importées). Moi et mon collègue avons dû changer la requête de telle sorte à créer des tables o1 et o2.

        En revoyant votre proposition, je pense que ça pourrait être bon. Je vais la tester ce soir avec mon collègue et je vous dirais quoi.

        • Partager sur Facebook
        • Partager sur Twitter
          15 mai 2018 à 13:14:44

          haine92 a écrit:

          "Les vendeurs ayant vendu et acheté à la même personne."

          Du coup je pense que ma requête devrait être satisfaisante.

          Je n'ai pas compris pourquoi vous étiez parti sur des sous-requêtes au départ ...

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

          [Maria-DB] Requête plus courte possible ?

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown