begin process at 2012 05 26 23:55:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

MySQL

 > 

Requêtes

 > 

Problème double requête même table, même champ


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème double requête même table, même champ

mercredi 3 novembre 2010 à 15:56:46 | Problème double requête même table, même champ

xxiv

Bonjour,

j'ai un problème que pour avoir le résultat voulu en une seul requête.

Les deux table concernées

Notices

notice_id || tit1 || indexint


Notices_custom_value

notices_custom_champ || notices_custom_origine || notices_custom_integer



La table notice contient des ouvrages, indexint permet de les retrouver par thème (je ne dois piocher que dans une certaine plage d'ID .

Code :
SELECT DISTINCT n.notice_id, n.tit1, n.indexint FROM notices AS n WHERE n.indexint BETWEEN 5325 AND 5356 AND n.indexint="5339"(le thème recherché).



jusque là, pas de problème.
Mais je dois aussi pouvoir affiner ma recherche avec le public cible, le support
Que l'on retrouve dans la table notices_custom_value.
Et que l'on peut retrouver en fonction de la valeur de notices_custom_champ 5=public 2=support et le type se trouvent dans la colonne notices_custom_integer.
donc pour un ouvrage ayant un thème spécifique et un public donné, cela donnerait
Code :
SELECT DISTINCT n.notice_id, n.tit1, n.indexint FROM notices AS n INNER JOIN notices_custom_values ncv ON ncv.notices_custom_origine = n.notice_id WHERE n.opac_visible_bulletinage=1 AND n.indexint BETWEEN 5325 AND 5356 AND ncv.notices_custom_champ=5  AND  ncv.notices_custom_integer=4 AND ncv.notices_custom_champ=2  AND  ncv.notices_custom_integer=15



Mais bien entendu ça coince...

Si je ne suis pas assez clair, n'hésitez pas à me le dire =)

Merci d'avance pour ceux qui répondront
mercredi 3 novembre 2010 à 19:09:30 | Re : Problème double requête même table, même champ

TIKATKT

Salut

La table 'Notices' ne contient pas le champ 'opac_visible_bulletinage' !!
mercredi 3 novembre 2010 à 19:17:47 | Re : Problème double requête même table, même champ

TIKATKT

Pense à utiliser 'Or' à la place de 'AND' en fonction de ce que tu veux avoir comme résultat, d'ailleurs dans ta première requète, tu dis (le thème recherché) je comprends de là que tu cherche bien l'index 5339 alors pourquoi ajouter la première condition :
Code :
(n.indexint BETWEEN 5325 AND 5356 )  
?.

et dans la deuxième requête tu as mis comme condition :
Code :
(ncv.notices_custom_champ = 5) AND (ncv.notices_custom_integer = 4) AND 
                      (ncv.notices_custom_champ = 2) AND (ncv.notices_custom_integer = 15) 

je t'assure que tu n'aura jamais de résultat avec ces conditions là, vu qu'un champ d'une table ne prend qu'une seule valeur à la fois !!

donc essais de revoir ta requête et si jamais tu as d'autres soucis n'hésite pas à les poster !

bon courage



jeudi 4 novembre 2010 à 10:51:58 | Re : Problème double requête même table, même champ

xxiv

merci d'avoir répondu =)

le champ opac_visible_bulletinage existe bien, je ne me suis pas amusé à donner tout les champs des tables, mais juste ceux dont j'ai besoin. Par facilité et lisibilité

Code :
(n.indexint BETWEEN 5325 AND 5356 )

Il sert à ne pas faire ressortir les notices dont on a pas besoin quand il n'y a pas de recherche sur le thème.



Code :
(ncv.notices_custom_champ = 5) AND (ncv.notices_custom_integer = 4) AND 
                      (ncv.notices_custom_champ = 2) AND (ncv.notices_custom_integer = 15) 


je t'assure que tu n'aura jamais de résultat avec ces conditions là, vu qu'un champ d'une table ne prend qu'une seule valeur à la fois !!


Je sais bien, et c'est bien de là que vient mon problème. c'est que je ne vois pas comment faire pour rechercher un public et un support en même temps.

Ou à la limite construire la requête en deux temps. D'abord recherche sur thème avec un support ou un public, garder les id de ces notices et relancer un recherche pour affiner. Et tout ça sans que le visiteur ne le voit bien sûr =)
jeudi 4 novembre 2010 à 11:16:32 | Re : Problème double requête même table, même champ

TIKATKT

c'est quoi exactement le résultat que tu veux avoir ?!?

sinon à ce que j'ai compris tu peux faire ceci :
Code :
((ncv.notices_custom_champ = 5) AND (ncv.notices_custom_integer = 4))OR
                      ((ncv.notices_custom_champ = 2) AND (ncv.notices_custom_integer = 15))

jeudi 4 novembre 2010 à 11:49:20 | Re : Problème double requête même table, même champ

xxiv


j'aimerais pouvoir faire ressortir les notices qui ont un thème précis et un public donné ainsi qu'un support spécifique.
Code :
((ncv.notices_custom_champ = 5) AND (ncv.notices_custom_integer = 4))OR
                      ((ncv.notices_custom_champ = 2) AND (ncv.notices_custom_integer = 15))



Et pour situer le contexte, j'ai développé un moteur de recherche d'outils pédagogiques. Qui recherche sur deux banques de données.
Et ce moteur permet de rechercher les outils suivant le thème, le support, le public et l'approche.

Sur l'autre bdd je n'ai pas de problème pour effectuer la recherche et sortir les résultats. Mais sur celle-ci, le support, le public et l'approche sont tous dans la même table

samedi 20 novembre 2010 à 20:18:55 | Re : Problème double requête même table, même champ

Robert33

Membre Club

Bonsoir

ce post est un peu vieux, et tu as peut être déjà la solution...

si non, il faut que tu fasses autant de jointures sur la table Notices_custom_value que tu as de conditions a tester:
exemple avec 2 conditions sur les champs 2 et 5:

Code sql :
SELECT DISTINCT n.notice_id , n.tit1 , n.indexint FROM notices n 
  INNER JOIN notices_custom_values ncv1 ON n.notice_id = ncv1.notices_custom_origine AND ncv1.notices_custom_champ = 5 
  INNER JOIN notices_custom_values ncv2 ON n.notice_id = ncv2.notices_custom_origine AND ncv2.notices_custom_champ = 2
  WHERE (n.opac_visible_bulletinage = 1) AND (n.indexint BETWEEN 5325 AND 5356) 
    AND (ncv1.notices_custom_integer = 2) 
    AND (ncv2.notices_custom_integer = 7)


Bob.


Cette discussion est classée dans : and, champ, custom, notices, indexint


Répondre à ce message

Sujets en rapport avec ce message

GROUP BY ET tri [ par fcdconnect ] Bonjour,j'aimerai savoir comment trier les resultat groupé dans une requete mysql de ce type : champ de la table :id | num | datetime |etc1 | 0552| 2 probleme de comparaison de table [ par ehmarc ] SalutJe suis sous MySQL voici ma requetejai deux table t1 et t2 qui ont en gros une soixantaine d'entrer chacunneje veut faire ressortir les champ qui changer le nom d'un champ dans une base access [ par oluha ] BonjourJ'aimerai savoir s'il est possible de changer le nom d'un champ d'une base access avec une requête sql ?En cherchant sur le web j'ai trouvé ces sql server 2000 trés urgent!!! [ par abari ] dans une page asp j'exécute une requette d'insertion dont j'insert une chaine vide dans un champ date,mais sql server2000 fais une conversion de cette Groupement d'enregistrements [ par dp_favresa ] Bonjour, Je dois récupérer des infos venant de plusieures tables, j'utilise la fonction JOIN, cela fonctionne très bien (code ci-dessous) : < revoyer plusieur valeur??? [ par Waldo2188 ] Salut à tousJ'aimerais savoir s'il est possible qu'une procédure stocké renvoie plusieur valeur?Voila ce que j'ai déjà fait:Ce que j'aimerais c'est qu requete SQL aider mois SVP [ par spoque ] Bonjour Voici mon problème: $valeur= odbc_exec( $cnx, "(SELECT (COUNT (ID)*10) FROM Users WHE TVA sur ma requete [ par spoque ] bonjour à tous,comment faire pour rajouter la TVA (7,6%) sur cette requete?Merci d'avance(select sum(compte) from (SELECT (COUNT (ID)*10) as compte FR deux chiffre aprèla virgule [ par spoque ] Hello toujour pas trouvé une solution pour ma requete j'aimerais deux chiffres après la virgule.Cordialementselect sum(compte) from (SELECT (COUNT (ID somme terme a terme éléments d'un champ [ par negstar971 ] Comment je dois faire si avec un table comme la suivante | relevé ||    2     ||    3     ||    4     ||&nb


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,694 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales