requete SQL mal formulée...

fraid26

WRInaute discret
Bonjour à tous !

J'ai l'impression que j'ai un petit soucis avec l'une de mes requêtes SQL.

Contexte : j'ai une table qui contient des informations relatives à des factures, dont un champ qui est l'ID tiers.
J'ai une table qui stocke tous les noms des tiers.

Le lien est donc fait via cet ID tiers.

Mon problème est que j'aimerais sélectionner mes factures, et ordonner cette liste en fonction du nom du tiers (donc dans l'autre table).

Actuellement ma requête SQL est ainsi :

Code:
Select ... WHERE (n_factures.id_tiers=n_tiers.id_tiers  or n_factures.id_tiers='0') ...

Si je laisse ainsi la même facture ressorts plusieurs fois. J'ai essayer avec distinct id_facture mais ça me dit que ce n'est pas correct... si j'enlève le or n_factures.id_tiers='0', je n'ai plus aucun enregistrement renvoyés (je suppose que ça vient du fait que ma table tiers peut être vide, ce champ étant optionnel).

Et pour compliquer, j'ai la même relation avec 3 tables en plus de ma table tiers (toutes liées à ma table factures).

Pour le moment, je passe par du php avec un if pour éviter de traiter deux fois la même facture.
Cependant, dans ma base test j'ai 3 factures, et SQL renvoyait environ 30 ou 40 enregistrements. Certains de mes clients ont des milliers de factures, dizaines de tiers etc, donc je suppose que la requête sera très lente avec de tels nombres... Avez vous une idée ?!

merci d'avance !

frédéric
 

jamalofski

WRInaute discret
si j'ai bien compris, tu veux afficher essentiellement les factures triées par le nom du tiers s'il y en a un?!

si c'est le cas essaye ca (jointure externe) :

Code:
select n_factures.*, n_tiers.rubrique_qui_représente_le_nom
from n_factures left join n_tiers on n_factures.id_tiers=n_tiers.id_tiers
order by n_tiers.rubrique_qui_représente_le_nom
 

Discussions similaires

Haut