Bonjour tout le monde et heureuse année 2014.
Je possède 3 tables(client,commande,lotcommande)
un client peut faire plusieurs commande.Mais une commande appartient à un client.
Une même commande peut avoir à plusieurs lots.Mais un lot sera issu d'une commande unique.
j'ai donc: client (0,n)------>(0,1) commande (0,n)-------->(0,1)lotcommande
Pour certains besoins,
j'ai developpé cette requête:
Mais quand j'ai executé le DTS, les financiers me disent qu'ils ne voient pas tous les enregistrements.Après un test de la requête dans la base, j'ai bien tous les enregistrements, mais par le dts (sql server 2000, windows 2003, RAM 2Go), il ne me renvoie toujours pas la totalité des résultats et je ne vois pas où est le problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 select te.*,ce.*,le.lieu_depot from commande ce inner join client te on (te.id_client=ce.id_client and te.tarif=ce.tarif) inner join lotcommande le on(ce.id_commande=le.id_commande and ce.region=le.region) where te.datecreation=2013 order by datecreation asc
J'ai opté pour cette solution:
je découpe la requête en deux requêtes reliées par UNION
qu'en pensez vous de ce découpage, l'optimisation vous semble améliorée ou en regression par rapport à la première requête?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 select te.*,ce.* from client te inner join commande ce on (te.id_client=ce.id_client and te.tarif=ce.tarif) where te.datecreation=2013 UNION select be.*,le.lieu_depot from commande be inner join lotcommande le on(be.id_commande=le.id_commande and be.region=le.region)
merci d'avance.
Partager