Bonjour,
Je bosse sous postgresql 8.0.
Malgrés mes efforts, je ne parviens pas à gerer de grosses requêtes sur plusieurs tables. J'ai bien tenté d'utiliser les "UNION" et les sous-"SELECT" mais apparament ca ne suffit pas pour resoudre mon probleme.
Je m'explique :
Tables
-------
CLIENTS
- id_client
ABONNEMENTS
- id_abonnement
- id_type_abo
- id_client
TYPES_ABONNEMENTS
- id_type_abo
- id_cours
PAIEMENTS
- id_paiement
- id_abonnement
COURS
- id_cours |
Je vous passe les autres champs des tables qui sont inutiles pour trouver une solution, ce qui importe c'est les clés primaire et clés étrangeres.
Le problème :
Si avec ces 5 tables je fais une vue, n'apparaitront que les clients qui ont un abonnement ainsi que uniquement les clients qui ont effectué un paiement. Car je procède comme ceci :
SELECT * FROM clients, abonnements, types_abonnements, paiements, cours
WHERE clients.id_client=paiements.id_clients AND
abonnements.id_abonnements...... et pareil avec les autres relations. |
Donc ma question est, comment m'y prendre, pour avoir en une seule requete, un listing de tous les paiements, enregistré, ainsi que tous les abonnements enregistrés pour chaque clients, et faire en sorte que même si certains clients n'ont pas d'abonnements, et/ou n'ont pas encore fait de paiements pour certains abonnement, ces clients s'affichent quand même dans la table retournée en resultat ?
J'ai besoin de pouvoir faire ca, car sinon lors du listing des clients, je devrais faire une requête supplémentaire pour chaque client, car par exemple j'affiche en rouge ceux qui sont pas en ordre et en vert ceux qui le sont, ou encore en gris ceux qui n'ont pas d'abonnements en cours... etc...
donc jai pas envie qu'un operation se fasse en 100 requetes.
Si il n'y a pas moyen de faire ca en une requete, a la limite si il font ne faire 3 ou 4, avec des sous select pq pas ca me gene pas, quand il faut il faut. mais pas une requete pour chaque neregistrement ca me parrait incoherant.
Voila les pro du SQL si vous avez deja rencontré ce probleme, et encore mieux avez une ou plusieurs solutions a me proposer, je suis preneur! car je galère un peu là.
Merci d'avance tlm ^^
A+
Message édité par Gat$ le 16-03-2005 à 00:51:09