Moteur multicritere - PHP - Programmation
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)
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...
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
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
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
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?? |
et d'apres toi que fait il du reste de la ligne??(pour un meme nom plusieurs albums differents)
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
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
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...
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
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. |
C'est quoi cette base de donnée merdique qui demande une colone calculé pour faire un group by?
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 ???
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.
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.
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
Marsh Posté le 27-09-2005 à 16:10:13
exemple fictif (quoi que)
Citation : select nom, prenom from clients group by nom,prenom |
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 !
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.
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.