Bonjour,
Sur le coup je pensais que ca serait simple, mais je bloque sans y arriver donc je préferre poser la question.
Voici la structure de ma base de données : http://guipom.free.fr/public/structure.jpg
Je génère dans un premier temps une requête du type :
Ce qui fonctionne parfaitement et me retourne les résultats attenduSELECT DISTINCT m.idmedia,m.titre,m.url,m.typemedia,l.codeinsee,l.echelle FROM geopos_media m LEFT OUTER JOIN geopos_localisation l ON m.idmedia=l.idmedia LEFT OUTER JOIN geopos_themes th ON m.idmedia=th.idmedia LEFT OUTER JOIN geopos_descr des ON m.idmedia=des.idmedia WHERE (m.typemedia='Texte' OR m.typemedia='Statistiques' OR m.typemedia='Carte' OR m.typemedia='Graphique') AND (th.idtheme=0 OR th.idtheme=1)
Le problème se situe au niveau des idtheme
Le principe est que dans un applet Java, l'utilisateur définit un arbre booléen sur les thèmes, avec en feuille ces fameux th.idthemes=x, x un nombre.
Disons par exempleJe ne sais pas si l'exemple est parfaitement juste, je pense que oui, enfin l'idée est la ...(NOT (th.idthemes=0 OR th.idthemes=1) AND (th.idthemes=2 AND (th.idthemes=3 OR th.idthemes=4)))
Ce que je veux évidemment, c'est récupérer la liste des medias qui disposent des themes comme l'utilisateur a fait son arbre juste avant. Quand ce sont que des OR et que c'est bien linéaire, ok, mais deja rien qu'un AND entre deux thèmes ne me ressort plus rien
Je vois pourquoi, mais je ne vois pas du tout comment corriger mon erreurSELECT DISTINCT m.idmedia,m.titre,m.url,m.typemedia,l.codeinsee,l.echelle FROM geopos_media m LEFT OUTER JOIN geopos_localisation l ON m.idmedia=l.idmedia LEFT OUTER JOIN geopos_themes th ON m.idmedia=th.idmedia LEFT OUTER JOIN geopos_descr des ON m.idmedia=des.idmedia WHERE (m.typemedia='Texte' OR m.typemedia='Statistiques' OR m.typemedia='Carte' OR m.typemedia='Graphique') AND (th.idtheme=0 AND th.idtheme=1)
Je résume donc, le but c'est de trouver les documents (idmedia de la table media) qui disposent ou non suivant les choix des utilisateurs des idthemes.
d'un point de vue simple idtheme=0 AND idtheme=1 dans un premier temps
mais surtout des trucs du genre idtheme=0 AND (idtheme=2 OR idtheme=1)
La je suis complètement perdu, je sais meme pas ou aller ! Merci pour votre aide
edit : je précise que je vois bien qu'il ne faut pas faire une jointure, mais quoi faire exactement je ne sais pas, et je travaille avec postgresql, mais je ne pense pas que ca soit important.
Partager