[ ASP ] Problèmes multi table

cs_gotcha Messages postés 2 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 16 décembre 2004 - 16 déc. 2004 à 03:53
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007 - 16 déc. 2004 à 15:25
Je suis entrain de refaire un site pour une TEAM MultiGaming ... mais la je bloque complètement :x

...

j'ai une base de données ACCESS nommé MEMBRE.MDB

1ère Table : CATEGORIE
Champ : Cat & Description


------------------------------
| cat | Description |
------------------------------
| 1 | Counter-Strike BE |
| 2 | Counter-Strike FR |
| 3 | Day Of Defeat |
------------------------------



2ème Table : MEMBRE
Champ : Cat / Player / mail ... (et toutes les autres infos)


-------------------------------
| cat | Player | .... |
-------------------------------
| 1 | Player 1 | .... |
| 1 | Player 2 | .... |
| 1 | Player 3 | .... |
| 2 | Player 1 | .... |
-------------------------------


le problème c'est pour l'affichage des données, je ne sais plus comment faire la requete correctement pour obtenir

CATEGORIE (csbe)
* Player 1 | mail | ...
* Player 2 | mail | ...
* Player 3 | mail | ...

CATEGORIE (csfr)
* Player 1 | mail | ...
* Player 2 | mail | ...
* Player 3 | mail | ...

CATEGORIE (dod)
* Player 1 | mail | ...
* Player 2 | mail | ...
* Player 3 | mail | ...


donc il doit faire un "loop" catégorie et dans chaque ... faire un "loop" player en fonction du champ CAT

hum , je sais pas si vous avez compris ce que j'essaye d'expliquer péniblement :cry:

4 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
16 déc. 2004 à 13:10
t'as deux solutions, soit faire ca en VB avec des boucles etc ... c pas compliqué, mais ton serveur web va travailler pour la boucle, et à chaque passage dans ta boucle, ton serveur SQL aussi, je te deconseil cette méthode.

la deuxieme solution, c'est de de faire un joli requete SQL qui te retourne tout ca comme tu le veux :) , il va falloir utiliser des jointures avec le mot clé INNER JOIN pour avoir de l'aide : sqlfr.com et sql.developpez.com
de memoire ca doit faire un truc de ce genre:

Select Categorie.description, membre.*
From Categorie INNER JOIN Membre
Where Categorie.cat = Membre.cat

mais je suis pas sur du tout, notamment sur le mot clé Where, c'est peut etre IN je sais plus, mais sur sql.developpez.com il y a pas mal d'exemple de jointure

Cyril
0
cs_gotcha Messages postés 2 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 16 décembre 2004
16 déc. 2004 à 13:39
Thx je vais regarder sur les sites que tu donne

en fait voila la page en question que j'aimerai modifier : http://web.1asphost.com/sux4ever/membres/

pour l'instant ca fonctionne avec 3 connect différente :x

SQLquery = "SELECT * FROM membre WHERE sections like '%cs%' ORDER BY NAME ASC"
SQLquery1 = "SELECT * FROM membre WHERE sections like '%dod%' ORDER BY NAME ASC"
SQLquery2 = "SELECT * FROM membre WHERE sections like '%vip%' ORDER BY NAME ASC"

mais si je veux ajouter/supprimer une catégorie, je suis obliger de modifier les sources ,j'aimerai pouvoir tous gérer via la partie admin ...
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
16 déc. 2004 à 13:56
ben les jointures sont fait pour toi ;)

l'autre solution est de faire mumuse avec des for each ...

je te conseil aussi de faire des classes et des collections de classes si tu travails en .net bien sur.

par exemple tu peut faire cette classe

public class membreCollection
inherits CollectionBase

public function Ad(item as membre) as membre
me.List.Add(item)
return item
end funtion

public Default function Item(i as integer) as membre
return ctype(me.list(i),membre)
end function

end class

public class membre

public sub new()
end sub

public sub new(categorie as string, nom as string)
me._name = nom
me._Cat = categorie
end sub

public property name
.....

public property cat

end class

et apres tu peux faire

dim membres as new membrecollection

membres.add(new membre("CSFR", "Cyril")

etc...

Je te donne juste une piste apres à toi de l'exploiter, mais pour faire ce genre de choses, travailler avec des objets, c'est tres pratique, apres il te reste juste à lier ta bdd avec ta collection.

une fois que tu auras fait ta requete avec des innerjoin, tu vas tomber sur un datareader, tu pourras faire quelque chose du genre

dim m as membre
dim membres as membreCollection

do until not myreader.Read()

m = new membre
m.cat = myreader.item("categorie")
m.name = myreader.item("name")

membres.add(m)

loop

voila un petit exemple de ce que je te conseil de faire pour ton site, apres tu verras que travailler avec la bdd, devient une partie de plaisir :) bien sur il faut comprendre le principe, savoir deja travaillé avec de la programmation orienté objet, mais si tu connais deja la POO tu verras que cette méthode est tres agréable. Pour que ca devienne vraiment interessant, il faut bien sur modifier ces classes, rajouter des fonctionnalités etc...

Cyril
0
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
16 déc. 2004 à 15:25
Bonjour

Pour le INNER JOIN, c'est ON qu'il faut utiliser.

Ta requete : select * from categorie left join membre on categorie.cat=membre.cat order by categorie.cat

Cordialement
Roro webDev 8-)
0
Rejoignez-nous