Moteur multicritere

Moteur multicritere - PHP - Programmation

Marsh Posté le 26-09-2005 à 10:50:53    

Bonjour,
Je suis à la recherche d'un moteur de recherche multicritère sur plusieurs tables je vois comment faire avec une seule tables mais plusieurs cela se complique un peu. Avec la concatenation pour les from et les where.
 
Merci pour vos conseils.

Reply

Marsh Posté le 26-09-2005 à 10:50:53   

Reply

Marsh Posté le 26-09-2005 à 12:24:10    

peux tu etre plus explicite stp?

Reply

Marsh Posté le 26-09-2005 à 13:38:43    

recherche de logiciel : "windows software & reseau"
 
probléme de création de requette SQL => SGBD/SQL
Mais déjà tout bon tutoriel sur le langage SQL t'apprendras comment faire une requette utilisant plusieurs tables à la fois, et en clair, il suffit juste de dire à quelle table appartient telle colone en utilisant la syntaxe suivante : "table.colone" (sans les guillemets évidement)

Reply

Marsh Posté le 26-09-2005 à 13:42:27    

Je ne comprends pas bien ta question, mais voici un exemple de requete multitable :  
 
SELECT *
FROM sqlTable A, sqlTable2 B, sqlTable3 C
WHERE A.Col1 = B.Col1
AND A.Col1 = C.Col1
AND A.Col1 = 'bonjour'
ORDERBY A.Col1
 
Bien sûr, sqlTable1, sqlTable2, sqlTable3 et Col1 sont à remplacer par tes noms de tables et colonnes...

Reply

Marsh Posté le 26-09-2005 à 14:07:49    

je viens de terminer et cela fonctionne bien j'ai stocker dans une variable mes différente table et condition avec des concatenation et tout executer à la fniet cela fonctionnne.
Mais, une question :  
je fais une recherche sur des utilisateurs qui des albums mais un uilisateur peut avoir plusieurs album et j'aimerai qu'a ma sortie de a requete il ne sorte pas plusieurs fois le meme nom.
J'ai essayer avec DISTINCT NOM, PRENOM,TITRE, mais d'apres ce que j'ai pu comprendre DISTCINCT prend les 3 champs en conditions et non 1 seul !! DISTINCT(NOM), PRENOM,TITRE pareil.
Quelqu'un sait il comment les eviter

Reply

Marsh Posté le 26-09-2005 à 14:17:57    

ben si tu veux selectionner et les utilisateurs et les albums tu comprends qu'en toute logique c'est impossible d'eviter les doublons sur les utilisateurs
en revanche si tu ne tiens pas aux albums tu peux utiliser distinct sur les ustilisateurs
si tu veux les users et le nombe d'albums de chacun orientes toi vers un sum avec group by => tu n'auras la non plus plus de doublons

Reply

Marsh Posté le 26-09-2005 à 14:25:30    

donc il existe pas de commande SQL qui permette de die que s'il voit deux NOM pareil il n'en prend qu'un en compte??
car moi c'est seulement pour de l'affichage et j'ai vu group by mais ne peut pas l'appliquer dans mon cas

Reply

Marsh Posté le 26-09-2005 à 14:27:57    

genzo22 a écrit :

donc il existe pas de commande SQL qui permette de die que s'il voit deux NOM pareil il n'en prend qu'un en compte??
car moi c'est seulement pour de l'affichage et j'ai vu group by mais ne peut pas l'appliquer dans mon cas


et d'apres toi que fait il du reste de la ligne??(pour un meme nom plusieurs albums differents)

Reply

Marsh Posté le 26-09-2005 à 14:49:14    

j'ai trouvé mais pas en requete en php je verifie à l'affichage les doublon s'il y en a j'affiche pas le doublons tout simplement et voila :)

Reply

Marsh Posté le 26-09-2005 à 14:50:55    

serieusement je te conseilles de lire un petit tuto d'sql
il est pas logique d'avoir a refiltrer dans ton code des donnees que du extrait via sql

Reply

Marsh Posté le 26-09-2005 à 14:50:55   

Reply

Marsh Posté le 26-09-2005 à 14:54:30    

tu utilises mysql ?
 
Parce qu'avec sql server (ce que j'utilise, mais j'imagine qu'avec oracle c'est pareil), le distinct ne porte que sur une colonne, mais il faut bien écrire ta requête...
 
Par contre, comme betsamee l'a dit, le group by est une excellente solution, et le mieux, c'est un tuto sql...

Reply

Marsh Posté le 26-09-2005 à 15:12:38    

je sais que c'est pas logique et comme je l'ai dis je ne peux pas faire un group by, sauf si l'on est pas obliger de faire un calcul avant.
et la apparement il ne porte pas seulement sur une colonne mais sur tout les champs du select

Reply

Marsh Posté le 26-09-2005 à 15:23:01    

genzo22 a écrit :

je sais que c'est pas logique et comme je l'ai dis je ne peux pas faire un group by, sauf si l'on est pas obliger de faire un calcul avant.
et la apparement il ne porte pas seulement sur une colonne mais sur tout les champs du select

:ouch:  :ouch:  :ouch: C'est quoi cette base de donnée merdique qui demande une colone calculé pour faire un group by? :o

Reply

Marsh Posté le 26-09-2005 à 15:36:49    

ah mais non pas du tout ce n'est pas mon cas !!
mais le group by s'associe bien avec un calcul ou autre tel sum ou max ...non ???

Reply

Marsh Posté le 26-09-2005 à 15:49:02    

c'est obligatoire pour faire un sum, max et autres s'il y a d'autres colones que celle qu'est calculé.
Mais ca peut aussi être utilisé sans ces colones là à condition d'avoir les même colones dans le group by et dans le résultat.

Reply

Marsh Posté le 26-09-2005 à 16:31:59    

mais moi justement j'ai pas besoin de faire de calcul

Reply

Marsh Posté le 26-09-2005 à 16:51:10    

Citation :

Mais ca peut aussi être utilisé sans ces colones là à condition d'avoir les même colones dans le group by et dans le résultat.


Trad : les colones de calcul ne sont pas obliguatoire.

Reply

Marsh Posté le 27-09-2005 à 15:59:28    

peut tu me faire voir le code de comment cela fonctinne alors parce que je vois pas trop

Reply

Marsh Posté le 27-09-2005 à 16:10:13    

exemple fictif (quoi que)

Citation :

select nom, prenom from clients group by nom,prenom

Reply

Marsh Posté le 27-09-2005 à 16:31:01    

euh oui mais ca , ca m'évite d'avoir des doublons ??
parce que j'ai essayer mais il me mettait deux fois le nom quand même !

Reply

Marsh Posté le 27-09-2005 à 16:38:52    

si tu veux une seule fois le nom, il faut rien demander d'autre que le nom, sinon comment veux tu qu'il sache quelle donnée des autres colone il doit choisir quand il y en a plusieurs de disponibles?
Et si c'est un probléme de majuscule ou d'espaces en début ou en fin, ben il faut utiliser les fonctions de la base de donnée qui correspondent.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed