![]() ![]()
| ![]() 07 02 2002 � 16:46 ![]() | ![]() ![]() ![]() ![]() |
![]() | Bjr � tous, Bon voil�, j'ai deux tables . Une avec toutes les donn�es sur des auteurs (nom, pr�nom, etc... et ID) et une autre table avec toutes les donn�es sur des fichiers post�es par des auteurs ( NomFichier, type, taille, etc..., ET Id de l'auteur). j'aimerais pouvoir en une seul requ�te r�colter toutes les informations concernant un auteur et toutes les donn�es sur les fichiers post�s par celui-ci. Je pense qu'il doit y avoir moyen de faire cela avec un "Inner Join" mais je sais plus comment ET SURTOUT, je ne sais plus comment diff�rencier les informations re�ues pour la table auteur et par la table fichier. Pff , je sais pas si j'ai �t� clair mais bon. Si qlq un sais m'expliquer comment faire ca en ASP , ce serait le top, sinon, le php, c'est d�j� nickel ...J dirais m�me nickel chrome... A plus, R-Matou | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 07 02 2002 � 17:27 ![]() | ![]() ![]() ![]() ![]() |
![]() | en sql microsoft : SELECT auteurs.nom,auteurs.prenom,fichiers.nomfichier FROM auteurs INNER JOIN fichiers ON auteurs.id = fichiers.auteurid en sql normalis� : SELECT auteurs.nom,auteurs.prenom,fichiers.nomfichier FROM auteurs,fichiers WHERE auteurs.id = fichiers.auteurid arghhh j'ai oublier le regroupement par l'identifiant de l'auteur. tu ajoute � la fin des requetes un "GROUP BY auteurs.id" et tu aura un regroupement des fichiers suivants l'identifiant de l'auteur. c'est �a que tu appelle diff�rencier ?? essaye �a et dis moi si �a merdouille ou si j'ai bien compris ta question. a+ | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 07 02 2002 � 18:42 ![]() | ![]() ![]() ![]() ![]() |
![]() | Par contre je me trompe peut �tre mais il me semble que la clause affect�e par le GROUP BY, ici auteurs.id doit �tre incluse dans le SELECT. Non ? @+ | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 07 02 2002 � 18:53 ![]() | ![]() ![]() ![]() ![]() |
![]() | Non ce que j'appelle diff�rencier , c'est que en fait, j'aimerais mettre en ent�te toute les informations sur l'auteur et puis tous les fichiers qui sont en rapport avec celui ci . Par exemple comme ca : Mathieu Bazelaire Web-designer Belgique Namur **************************************** Travaux1 - taille - commentaire: "bonjour" ------------------------------------------------- Travaux2 - taille - commentaire: "deuxi�me fichier" ------------------------------------------------- Travaux3 - taille - commentaire: "test en labo" ------------------------------------------------- Travaux4 - taille - commentaire: "encore un fichier nul" ------------------------------------------------- Travaux5 - taille - commentaire: "bon voil� c'est fini pour l'exemple" ------------------------------------------------- Tu comprends mieux ? merci d�j� pour la requ�te ca a l'air d'�tre bon... R-matou | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 07 02 2002 � 21:45 ![]() | ![]() ![]() ![]() ![]() |
![]() | Salut, Apparement u veux une solution compl�te non ? Tu sembles avoir les tables et ce que tu veux c'est le script pour les lire et les mettre en "forme" Table Auteurs (id, nom, prenom, pseudo, job, pays, ville, commentaire...) Table Realisations (id, idauteur, titre, type, taille, texte...) On suppose que tu passe l'id de l'auteur en param�tres, ex : http://www.bah.be/test/show_real.php3?id=12 <? include("scripts/connexion.php3"); // Connexion � la base MySQL $req1 = mysql_query("SELECT * FROM auteurs WHERE id= '$id' "); // Premi�re requ�te pour les infos de l'auteur $nom = mysql_result($req1,0, 'nom'); $prenom = mysql_result($req1,0, 'prenom'); $job = mysql_result($req1,0, 'job'); $pays = mysql_result($req1,0, 'pays'); $ville = mysql_result($req1,0, 'ville'); echo "$prenom $nom $job $pays $ville <br> "; $tmp = $prenom." ".$nom." ".$job." ".$pays." ".$ville; $long = strlen($tmp); for($i=0;$i <$lon;$i++) { echo "*"; // Pour ajuster le nombre d'�toiles aux infos au dessus } echo " <br> "; $req2 = mysql_query("SELECT * FROM realisation WHERE idauteur= '$id' "); $res = mysql_numrows($req2); for($i=0;$i <$res;$i++) { $titre = mysql_result($req2,$i, 'titre'); $taille = mysql_result($req2,$i, 'taille'); $texte = mysql_result($req2,$i, 'texte'); $affiche = "$titre - $taille - commentaire : $texte <br> "; echo $affiche; for($j=0;$j <100;$j++) { echo "-"; } echo " <br> "; } ?> Voila, c'est pas de l'ASP mais j'esp�re r�pondre � tes attentes... Si il y a des bugs (fortement probable ^^) c'est surtout du au fait que je l'ai fait un peu � l'arrache ![]() La mise en forme est celle de ton poste (� peu pr�s ...) � toi de faire mumuse avec le HTML ![]() Bon courage. @+ En plus je risque de me faire engueuler par les admins pour avoir fait la brute en collant tout le script l� ^^ Mea Culpa ![]() | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 08 02 2002 � 08:26 ![]() | ![]() ![]() ![]() ![]() |
![]() | Merci Angel2k, c'est gentil d'avoir voulu m'aider mais le r�el probl�me n'est pas l�...Tout ca , je sais le faire sans prob. Le probl�me vient du faite que avec ta m�thode (la plus courante et celle que j'utilise actuellement ) , pour chaque auteur qui va �tre visualis� , le serveur va recevoir 2 requ�tes "in ze tronch".... ![]() ![]() ![]() Hors pour �viter cela , il ya moyen (il me semble) de n'envoyer qu'une requ�te SQL (de nouveau il me semble).... Je sais que ca parait d�bile quand on parle de une ou deux requ�tes mais si on applique ca � un site qui a 100 personnes online, on peux parler de 100 ou 200 requ�tes... et l� , la diff�rence se fait ressentir sur la rapidit� du site. Et donc, on fait une seul requ�te (avec innerjoin je suppose) mais comment fait on pour diff�rencier les donn�es de l'auteur (une seul ligne puisque un seul auteur) et les donn�es des fichiers (plusieurs lignes puisque plusieurs fichiers) ( rhooo j'en fais de ces tartines...) Allez , c'est pas gr���ve , si personne ne sait, je resterai dans l'amateurisme en prog mais sinon... R-Matou | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 08 02 2002 � 08:54 ![]() | ![]() ![]() ![]() ![]() |
![]() | Qu'est ce qu'il nous fait le Matou, __nik_o t'as donne la reponse ! SELECT auteurs.nom,auteurs.prenom,fichiers.nomfichier FROM auteurs INNER JOIN fichiers ON auteurs.id = fichiers.auteurid Ce n'est pas ce que tu voulais ? ++gom | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 09 02 2002 � 16:16 ![]() | ![]() ![]() ![]() ![]() |
![]() | salut vous avez la solution tu veux faire ca : Mathieu Bazelaire Web-designer Belgique Namur **************************************** Travaux1 - taille - commentaire: "bonjour" ------------------------------------------------- Travaux2 - taille - commentaire: "deuxi�me fichier" ------------------------------------------------- Travaux3 - taille - commentaire: "test en labo" ------------------------------------------------- Travaux4 - taille - commentaire: "encore un fichier nul" ------------------------------------------------- Travaux5 - taille - commentaire: "bon voil� c'est fini pour l'exemple" ------------------------------------------------- et niko propose : SELECT auteurs.nom,auteurs.prenom,fichiers.nomfichier FROM auteurs,fichiers WHERE auteurs.id = fichiers.auteurid tout est l�. trie le r�sultat de ta s�lection par auteur (group by voir niko) et ensuite dans ta boucle d'affichage, intialise une variable temporaire pour le nom de l'auteur. en pseudo code ca donne : si (auteur.nom == nom_auteur_temp ) { // AUTEUR IDENTIQUE -> PAS D'AFFICHAGE DU NOM } else { // AUTEUR DIFFERENT -> AFFICHAGE DU NOM print (auteur.nom) print (*******************************) } print (fichiers.nomfichier) print (-----------------------) nom_auteur_temp = auteur.nom ca fait une requete. un join classique. a+ | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 09 02 2002 � 16:19 ![]() | ![]() ![]() ![]() ![]() |
![]() | t'as vu l'indentation Ben ? ;) | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 09 02 2002 � 16:21 ![]() | ![]() ![]() ![]() ![]() |
![]() | jointures & jointures externes par l'exemple imaginons qu'on ait un forum avec 2 tables : les sujets et les r�ponses. on veut un moteur de recherche sur le forum, qui recherche a la fois dans les sujets et dans les reponses. on aura une requete simple dans ce style : select distinct s.* from sujets s, reponses r where s.cle=r.cle_sujet // jointure and ( s.commentaire like '%$recherche%' or r.commentaire like '%$recherche%' ) // la s�quence recherch�e tout va bien, on obtient la liste de tous les sujets qui contiennent l'occurence recherch�e ou dont l'une au moins des reponses contient ladite occurence. mais il y a juste un probleme. si le sujet n'a pas de reponse, la condition s.cle=r.cle_sujet n'est pas v�rifi�e et l'enregistrement ne sera pas s�lectionn� lors de l'ex�cution de la requete. c'est dommage, on y etait presque ;) c'est une jointure classique. l� intervient la jointure externe : select distinct s.* from sujets left join reponses on sujets.cle=reponses.cle_sujet where s.cle=r.cle_sujet and ( s.commentaire like '%$recherche%' or r.commentaire like '%$recherche%' ) l� vous obtenez tous les sujets contenant l'occurence ou dont une des r�ponses contient l'occurence, meme les sujets sans reponse . la table de gauche (sujets) est dite DIRECTRICE et celle de droite (reponses) OPTIONNELLE . | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() ![]()
| ![]() 11 02 2002 � 18:36 ![]() | ![]() ![]() ![]() ![]() |
![]() | oi, merci , je ne visualisait pas bien comment le r�sultat sortait ... Maintenant, je me suis rappel� . c'est top top .. merci. Merci aussi pour ton petit cours, je crois qu'il me sera pratique. Et d�sol� de ne pas avoir pig� plus t�t pour les auteres ;) ;) ;) R-Matou | ![]() |
![]() |
|
![]() | ![]() | ![]() |
![]() | Pour r�pondre � ce sujet (et notifier automatiquement son auteur), cliquez sur le bouton REPONDRE A CE SUJET. Si vous voulez en plus avertir de votre r�ponse une personne qui a particip� � ce sujet, cliquez sur le bouton ![]() Vous n'�tes pas membre ou vous n'�tes pas logu�(e) ou les appeaux sont d�sactiv�s dans votre profil. Vous ne pouvez pas utiliser les appeaux. | ![]() |