Partage
  • Partager sur Facebook
  • Partager sur Twitter

Requête sql multicriteres

    4 juillet 2023 à 15:47:10

    [MAJ]

    Je pense avoir trouvé une piste.

    en utilisant des left outer join sur la même table, me permettant d'avoir des colonnes avec des noms différents et de pouvoir appliquer mes différentes clauses where.

    -------------

    Bonjour,

    Je vous expose mon projet sur lequel je travail actuellement.

    je dispose d'une base de photos pour laquelle chacune peut appartenir à plusieurs groupes composés de plusieurs tags.

    voir capture ci-dessous

    et la table des tags pour chaque photo

    Chaque ligne représente une photo avec un tag
    Une photo peut donc avoir plusieurs lignes correspondant à différents tag à laquelle elle appartient

    Le problème que je rencontre se situe au niveau des critères de recherche.
    la recherche pour chaque groupe est un OU
    la recherche entre groupe est un ET

    et là .... je bloque, car je peux récupérer sans problème les OU mais si je rajoute un ET sur un tag d'un autre groupe, là plus rien ne remonte.

    Si vous avez une piste pour m'aiguiller je suis preneur.

    merci par avance.




    -
    Edité par Mystic26000 4 juillet 2023 à 16:40:41

    • Partager sur Facebook
    • Partager sur Twitter
      19 juillet 2023 à 1:35:33

      Salut, désolé pour la mise en forme dégueulasse. En plus, les requêtes ont une syntaxe incorrecte.

      Je ne peux pas les tester, donc, je te laisse le soin de les lire et les retranscrire en langage SQL correct pour effectuer les tests.

      Sans transition, ma contribution :

      une photo a un identifiant

      une photo peut avoir plusieurs tags

      la relation étiqueter a une photo et un identifiant

      un groupe a un identifiant

      un tag fait parti d'un seul groupe donc un tag a un identifiant et un groupe

      PHOTO

      P1

      P2

      P3

      TAG

      T1

      T2

      T3

      ÉTIQUETER

      P1, T1

      P1, T2

      P2, T2

      P3, T1

      P3, T2

      P3, T3

      1. je veux les photos qui ont le tag T2 ;
      2. je veux les photos qui ont le tag T1 OU T3 ;
      3. je veux les photos qui ont le tag T1 ET T2 ;
      4. je veux les photos qui ont UNIQUEMENT le tag T1 ET T2 ;

      POUR 1 :

      P1

      P2

      POUR 2 :

      P1

      P3

      POUR 3 :

      P1

      P3

      POUR 4 :

      P1

      SELECT

      PHOTO

      FROM

      PHOTO JOIN ÉTIQUETER JOIN TAG

      WHERE

      DÉBUT POUR 1 :

      TAG VAUT T2

      FIN POUR 1

      DÉBUT POUR 2 :

      TAG IN (T1, T3)

      FIN POUR 2

      DEBUT POUR 3 :

      TAG VAUT T1 ET TAG VAUT T3

      FIN POUR 3

      DÉBUT POUR 4 :

      TAG VAUT T1 ET TAG VAUT T2 ET TAG NOT IN(select tag from tag

      where not tag in(T1, T2))

      FIN POUR 4

      ALTERNATIVE DÉBUT POUR 4 :

      where TAG = all (select tag from tag

      where tag in (T1, T2)) AND TAG NOT IN(select tag from tag

      where not tag in(T1, T2))

      FIN ALTERNATIVE POUR 4

      • Partager sur Facebook
      • Partager sur Twitter

      Requête sql multicriteres

      × 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