par
Cyrano » 08 févr. 2013, 19:57
Salut, ta question est un peu incomplète : tu n'y arrives pas, bon, ok, mais tu obtiens quoi ? Un message d'erreur ? Rien ? Et pour qu'on sache comment orienter éventuellement la réponse, tu attends quoi à la place du résultat actuel ?
Quoi qu'il en soit, je viens de jeter un coup d’œil à ta requête. Il y a peut-être un problème dans les jointures. En réalignant tout ça proprement histoire d'arriver à lire, voici une suggestion de correction :
SELECT
TOP (100) PERCENT dbo.ARTICLE.GA_CODEARTICLE AS Code,
dbo.ARTICLE.GA_LIBELLE AS Libellé,
dbo.ARTICLE.GA_QUALIFUNITESTO AS Cond,
dbo.ZW_TGD.YTS_PRIXNET AS TGD,
dbo.ZW_T000.YTS_PRIXNET AS Tarif,
dbo.ARTICLE.GA_VALLIBRE1 AS Planc,
dbo.ZW_TDES.YTS_PRIXNET AS Desto,
(dbo.DISPO.GQ_PHYSIQUE - dbo.DISPO.GQ_RESERVECLI) AS Dispo,
dbo.ZW_DATERECEPART.DATEATT AS [D. Arriv],
dbo.ZW_ETAT_CONTAINER.RDD_RDDLIBTABLE1 AS S,
dbo.ZWL_STOCKARTA.QDISPOP AS Réser,
(dbo.ZWL_STOCKARTA.QATT + dbo.ZWL_STOCKARTA.QDISPO) AS Solde,
dbo.ZW_TDET.YTS_PRIXNET AS Détail,
dbo.CHOIXEXT.YX_LIBELLE AS Statut,
dbo.ZW_DATERECEPART.qtecartons AS [Arr.]
FROM dbo.ZW_TDET
INNER JOIN dbo.ARTICLE ON dbo.ZW_TDET.YTS_ARTICLE = dbo.ARTICLE.GA_ARTICLE
INNER JOIN dbo.ZW_T000 ON dbo.ARTICLE.GA_ARTICLE = dbo.ZW_T000.YTS_ARTICLE
INNER JOIN dbo.DISPO ON dbo.ARTICLE.GA_ARTICLE = dbo.DISPO.GQ_ARTICLE
INNER JOIN dbo.CHOIXEXT ON dbo.ARTICLE.GA_LIBREART1 = dbo.CHOIXEXT.YX_CODE
LEFT OUTER JOIN dbo.ZW_TGD ON dbo.ARTICLE.GA_ARTICLE = dbo.ZW_TGD.YTS_ARTICLE
LEFT OUTER JOIN dbo.ZW_DATERECEPART ON dbo.ARTICLE.GA_ARTICLE = dbo.ZW_DATERECEPART.ARTICLE
INNER JOIN dbo.ZW_ETAT_CONTAINER ON dbo.ZW_DATERECEPART.Expr1 = dbo.ZW_ETAT_CONTAINER.GP_NUMERO
AND dbo.ARTICLE.GA_ARTICLE = dbo.ZW_ETAT_CONTAINER.GLARTICLE
LEFT OUTER JOIN dbo.CATALOGU ON dbo.ARTICLE.GA_ARTICLE = dbo.CATALOGU.GCA_ARTICLE
AND dbo.ARTICLE.GA_FOURNPRINC = dbo.CATALOGU.GCA_TIERS
LEFT OUTER JOIN dbo.ZWL_STOCKARTA ON dbo.ARTICLE.GA_ARTICLE = dbo.ZWL_STOCKARTA.QARTICLE
LEFT OUTER JOIN dbo.ZW_TDES ON dbo.ARTICLE.GA_ARTICLE = dbo.ZW_TDES.YTS_ARTICLE
WHERE (dbo.DISPO.GQ_DEPOT = 'C')
AND (dbo.ARTICLE.GA_FERME = '-')
AND (dbo.ZWL_STOCKARTA.QATT <> 0)
AND (dbo.ZW_DATERECEPART.qtecartons <> 0)
OR (dbo.DISPO.GQ_DEPOT = 'C')
AND (dbo.ARTICLE.GA_FERME = '-')
AND (LEFT(dbo.ARTICLE.GA_CODEARTICLE, 1) <> 'a')
AND (LEFT(dbo.ARTICLE.GA_CODEARTICLE, 1) <> 'b')
AND (LEFT(dbo.ARTICLE.GA_CODEARTICLE, 1) <> 'w')
AND ((dbo.DISPO.GQ_PHYSIQUE - dbo.DISPO.GQ_RESERVECLI) > 0)
ORDER BY Code
Petit truc : prends systématiquement l'habitude d'aligner ton code. Tu dois bien voir que c'est quand même plus facile à suivre, on se perd moins. Essaye de reprendre ta requête originale et aligne la de la même manière, tu devrais voir très vite ce que j'ai modifié. Le résultat devrait également être différent à l'exécution.
Salut, ta question est un peu incomplète : tu n'y arrives pas, bon, ok, mais tu obtiens quoi ? Un message d'erreur ? Rien ? Et pour qu'on sache comment orienter éventuellement la réponse, tu attends quoi à la place du résultat actuel ?
Quoi qu'il en soit, je viens de jeter un coup d’œil à ta requête. Il y a peut-être un problème dans les jointures. En réalignant tout ça proprement histoire d'arriver à lire, voici une suggestion de correction :
[sql]SELECT
TOP (100) PERCENT dbo.ARTICLE.GA_CODEARTICLE AS Code,
dbo.ARTICLE.GA_LIBELLE AS Libellé,
dbo.ARTICLE.GA_QUALIFUNITESTO AS Cond,
dbo.ZW_TGD.YTS_PRIXNET AS TGD,
dbo.ZW_T000.YTS_PRIXNET AS Tarif,
dbo.ARTICLE.GA_VALLIBRE1 AS Planc,
dbo.ZW_TDES.YTS_PRIXNET AS Desto,
(dbo.DISPO.GQ_PHYSIQUE - dbo.DISPO.GQ_RESERVECLI) AS Dispo,
dbo.ZW_DATERECEPART.DATEATT AS [D. Arriv],
dbo.ZW_ETAT_CONTAINER.RDD_RDDLIBTABLE1 AS S,
dbo.ZWL_STOCKARTA.QDISPOP AS Réser,
(dbo.ZWL_STOCKARTA.QATT + dbo.ZWL_STOCKARTA.QDISPO) AS Solde,
dbo.ZW_TDET.YTS_PRIXNET AS Détail,
dbo.CHOIXEXT.YX_LIBELLE AS Statut,
dbo.ZW_DATERECEPART.qtecartons AS [Arr.]
FROM dbo.ZW_TDET
INNER JOIN dbo.ARTICLE ON dbo.ZW_TDET.YTS_ARTICLE = dbo.ARTICLE.GA_ARTICLE
INNER JOIN dbo.ZW_T000 ON dbo.ARTICLE.GA_ARTICLE = dbo.ZW_T000.YTS_ARTICLE
INNER JOIN dbo.DISPO ON dbo.ARTICLE.GA_ARTICLE = dbo.DISPO.GQ_ARTICLE
INNER JOIN dbo.CHOIXEXT ON dbo.ARTICLE.GA_LIBREART1 = dbo.CHOIXEXT.YX_CODE
LEFT OUTER JOIN dbo.ZW_TGD ON dbo.ARTICLE.GA_ARTICLE = dbo.ZW_TGD.YTS_ARTICLE
LEFT OUTER JOIN dbo.ZW_DATERECEPART ON dbo.ARTICLE.GA_ARTICLE = dbo.ZW_DATERECEPART.ARTICLE
INNER JOIN dbo.ZW_ETAT_CONTAINER ON dbo.ZW_DATERECEPART.Expr1 = dbo.ZW_ETAT_CONTAINER.GP_NUMERO
AND dbo.ARTICLE.GA_ARTICLE = dbo.ZW_ETAT_CONTAINER.GLARTICLE
LEFT OUTER JOIN dbo.CATALOGU ON dbo.ARTICLE.GA_ARTICLE = dbo.CATALOGU.GCA_ARTICLE
AND dbo.ARTICLE.GA_FOURNPRINC = dbo.CATALOGU.GCA_TIERS
LEFT OUTER JOIN dbo.ZWL_STOCKARTA ON dbo.ARTICLE.GA_ARTICLE = dbo.ZWL_STOCKARTA.QARTICLE
LEFT OUTER JOIN dbo.ZW_TDES ON dbo.ARTICLE.GA_ARTICLE = dbo.ZW_TDES.YTS_ARTICLE
WHERE (dbo.DISPO.GQ_DEPOT = 'C')
AND (dbo.ARTICLE.GA_FERME = '-')
AND (dbo.ZWL_STOCKARTA.QATT <> 0)
AND (dbo.ZW_DATERECEPART.qtecartons <> 0)
OR (dbo.DISPO.GQ_DEPOT = 'C')
AND (dbo.ARTICLE.GA_FERME = '-')
AND (LEFT(dbo.ARTICLE.GA_CODEARTICLE, 1) <> 'a')
AND (LEFT(dbo.ARTICLE.GA_CODEARTICLE, 1) <> 'b')
AND (LEFT(dbo.ARTICLE.GA_CODEARTICLE, 1) <> 'w')
AND ((dbo.DISPO.GQ_PHYSIQUE - dbo.DISPO.GQ_RESERVECLI) > 0)
ORDER BY Code[/sql]
Petit truc : prends systématiquement l'habitude d'aligner ton code. Tu dois bien voir que c'est quand même plus facile à suivre, on se perd moins. Essaye de reprendre ta requête originale et aligne la de la même manière, tu devrais voir très vite ce que j'ai modifié. Le résultat devrait également être différent à l'exécution.