Bonjour,
Je souhaiterais additionner les 2 résultats de ma requête
mais je m'y perd un peu. Je suis sûr que vous saurez me
répondre...
Voici ma requête :
SELECT TOP 2 COUNT(DISTINCT n.NumBornes) AS [Total récup]
FROM dbo.PAYS p INNER JOIN
dbo.AFFAIRES a ON p.ID_PAYS = a.ID_PAYS INNER JOIN
dbo.BORNES b ON a.ID_AFFAIRE = b.ID_AFFAIRE INNER JOIN
dbo.NEWDOWNLOAD n ON b.BORNE = n.NumBornes
GROUP BY a.ID_PAYS, n.NumInfopak
HAVING (a.ID_PAYS = 1) AND (n.NumInfopak <> N'1073741823')
OR (a.ID_PAYS = 11)ORDER BY n.NumInfopak DESC
Le résultat, à ce jour, me donne :
Total récup
-----------
458
3
Je voudrais qu'il m'affiche 461.
Merci de votre aide
Bonjour,
Je souhaiterais additionner les 2 résultats de ma requête
mais je m'y perd un peu. Je suis sûr que vous saurez me
répondre...
Voici ma requête :
SELECT TOP 2 COUNT(DISTINCT n.NumBornes) AS [Total récup]
FROM dbo.PAYS p INNER JOIN
dbo.AFFAIRES a ON p.ID_PAYS = a.ID_PAYS INNER JOIN
dbo.BORNES b ON a.ID_AFFAIRE = b.ID_AFFAIRE INNER JOIN
dbo.NEWDOWNLOAD n ON b.BORNE = n.NumBornes
GROUP BY a.ID_PAYS, n.NumInfopak
HAVING (a.ID_PAYS = 1) AND (n.NumInfopak <> N'1073741823')
OR (a.ID_PAYS = 11)ORDER BY n.NumInfopak DESC
Le résultat, à ce jour, me donne :
Total récup
-----------
458
3
Je voudrais qu'il m'affiche 461.
Merci de votre aide
Bonjour,
Je souhaiterais additionner les 2 résultats de ma requête
mais je m'y perd un peu. Je suis sûr que vous saurez me
répondre...
Voici ma requête :
SELECT TOP 2 COUNT(DISTINCT n.NumBornes) AS [Total récup]
FROM dbo.PAYS p INNER JOIN
dbo.AFFAIRES a ON p.ID_PAYS = a.ID_PAYS INNER JOIN
dbo.BORNES b ON a.ID_AFFAIRE = b.ID_AFFAIRE INNER JOIN
dbo.NEWDOWNLOAD n ON b.BORNE = n.NumBornes
GROUP BY a.ID_PAYS, n.NumInfopak
HAVING (a.ID_PAYS = 1) AND (n.NumInfopak <> N'1073741823')
OR (a.ID_PAYS = 11)ORDER BY n.NumInfopak DESC
Le résultat, à ce jour, me donne :
Total récup
-----------
458
3
Je voudrais qu'il m'affiche 461.
Merci de votre aide
-----Message d'origine-----
Plusieurs erreurs dans ta requête...
1) le HAVING est un filtre sur les résultats. Il n'a
d'un filtrage sur calculs d'agrégats (SUM, MAX, MIN,
un filtre WHERE
2) on ne comprend pas bien l'ordre logique du prédicat du
s'agit t-il de :
les ID_PAYS = 1 et (les NumInfopak <> N'1073741823 ou les
ou bien
(les ID_PAYS = 1 et les NumInfopak <> N'1073741823) ou
Pour être sûr de ce que tu veut met des parenthèses là ou
à chaque membre de la condition ce qui ne veut rien dire.
A partir de là tu verra êut être mieux comment sommer tes
Mais je ne comprend pas la logique de ta requête... Que
(en français ...)
SELECT TOP 2 COUNT(DISTINCT n.NumBornes) AS [Total récup]
FROM PAYS p
INNER JOIN AFFAIRES a
ON p.ID_PAYS = a.ID_PAYS
INNER JOIN BORNES b
ON a.ID_AFFAIRE = b.ID_AFFAIRE
INNER JOIN NEWDOWNLOAD n
ON b.BORNE = n.NumBornes
WHERE p.ID_PAYS = 1
AND n.NumInfopak <> N'1073741823' OR p.ID_PAYS = 11
GROUP BY p.ID_PAYS, n.NumInfopak
ORDER BY n.NumInfopak DESC
A +
Alexandre a écrit:Bonjour,
Je souhaiterais additionner les 2 résultats de ma
mais je m'y perd un peu. Je suis sûr que vous saurez me
répondre...
Voici ma requête :
SELECT TOP 2 COUNT(DISTINCT n.NumBornes) AS [Total
FROM dbo.PAYS p INNER JOIN
dbo.AFFAIRES a ON p.ID_PAYS = a.ID_PAYS INNER JOIN
dbo.BORNES b ON a.ID_AFFAIRE = b.ID_AFFAIRE INNER
dbo.NEWDOWNLOAD n ON b.BORNE = n.NumBornes
GROUP BY a.ID_PAYS, n.NumInfopak
HAVING (a.ID_PAYS = 1) AND (n.NumInfopak <>
OR (a.ID_PAYS = 11)ORDER BY n.NumInfopak DESC
Le résultat, à ce jour, me donne :
Total récup
-----------
458
3
Je voudrais qu'il m'affiche 461.
Merci de votre aide
--
Frédéric BROUARD, MVP SQL Server. Expert SQL /
Livre SQL - col. Référence :
Le site du SQL, pour débutants et pros :
************************ www.datasapiens.com
.
-----Message d'origine-----
Plusieurs erreurs dans ta requête...
1) le HAVING est un filtre sur les résultats. Il n'a
d'un filtrage sur calculs d'agrégats (SUM, MAX, MIN,
un filtre WHERE
2) on ne comprend pas bien l'ordre logique du prédicat du
s'agit t-il de :
les ID_PAYS = 1 et (les NumInfopak <> N'1073741823 ou les
ou bien
(les ID_PAYS = 1 et les NumInfopak <> N'1073741823) ou
Pour être sûr de ce que tu veut met des parenthèses là ou
à chaque membre de la condition ce qui ne veut rien dire.
A partir de là tu verra êut être mieux comment sommer tes
Mais je ne comprend pas la logique de ta requête... Que
(en français ...)
SELECT TOP 2 COUNT(DISTINCT n.NumBornes) AS [Total récup]
FROM PAYS p
INNER JOIN AFFAIRES a
ON p.ID_PAYS = a.ID_PAYS
INNER JOIN BORNES b
ON a.ID_AFFAIRE = b.ID_AFFAIRE
INNER JOIN NEWDOWNLOAD n
ON b.BORNE = n.NumBornes
WHERE p.ID_PAYS = 1
AND n.NumInfopak <> N'1073741823' OR p.ID_PAYS = 11
GROUP BY p.ID_PAYS, n.NumInfopak
ORDER BY n.NumInfopak DESC
A +
Alexandre a écrit:
Bonjour,
Je souhaiterais additionner les 2 résultats de ma
mais je m'y perd un peu. Je suis sûr que vous saurez me
répondre...
Voici ma requête :
SELECT TOP 2 COUNT(DISTINCT n.NumBornes) AS [Total
FROM dbo.PAYS p INNER JOIN
dbo.AFFAIRES a ON p.ID_PAYS = a.ID_PAYS INNER JOIN
dbo.BORNES b ON a.ID_AFFAIRE = b.ID_AFFAIRE INNER
dbo.NEWDOWNLOAD n ON b.BORNE = n.NumBornes
GROUP BY a.ID_PAYS, n.NumInfopak
HAVING (a.ID_PAYS = 1) AND (n.NumInfopak <>
OR (a.ID_PAYS = 11)ORDER BY n.NumInfopak DESC
Le résultat, à ce jour, me donne :
Total récup
-----------
458
3
Je voudrais qu'il m'affiche 461.
Merci de votre aide
--
Frédéric BROUARD, MVP SQL Server. Expert SQL /
Livre SQL - col. Référence :
Le site du SQL, pour débutants et pros :
************************ www.datasapiens.com
.
-----Message d'origine-----
Plusieurs erreurs dans ta requête...
1) le HAVING est un filtre sur les résultats. Il n'a
d'un filtrage sur calculs d'agrégats (SUM, MAX, MIN,
un filtre WHERE
2) on ne comprend pas bien l'ordre logique du prédicat du
s'agit t-il de :
les ID_PAYS = 1 et (les NumInfopak <> N'1073741823 ou les
ou bien
(les ID_PAYS = 1 et les NumInfopak <> N'1073741823) ou
Pour être sûr de ce que tu veut met des parenthèses là ou
à chaque membre de la condition ce qui ne veut rien dire.
A partir de là tu verra êut être mieux comment sommer tes
Mais je ne comprend pas la logique de ta requête... Que
(en français ...)
SELECT TOP 2 COUNT(DISTINCT n.NumBornes) AS [Total récup]
FROM PAYS p
INNER JOIN AFFAIRES a
ON p.ID_PAYS = a.ID_PAYS
INNER JOIN BORNES b
ON a.ID_AFFAIRE = b.ID_AFFAIRE
INNER JOIN NEWDOWNLOAD n
ON b.BORNE = n.NumBornes
WHERE p.ID_PAYS = 1
AND n.NumInfopak <> N'1073741823' OR p.ID_PAYS = 11
GROUP BY p.ID_PAYS, n.NumInfopak
ORDER BY n.NumInfopak DESC
A +
Alexandre a écrit:Bonjour,
Je souhaiterais additionner les 2 résultats de ma
mais je m'y perd un peu. Je suis sûr que vous saurez me
répondre...
Voici ma requête :
SELECT TOP 2 COUNT(DISTINCT n.NumBornes) AS [Total
FROM dbo.PAYS p INNER JOIN
dbo.AFFAIRES a ON p.ID_PAYS = a.ID_PAYS INNER JOIN
dbo.BORNES b ON a.ID_AFFAIRE = b.ID_AFFAIRE INNER
dbo.NEWDOWNLOAD n ON b.BORNE = n.NumBornes
GROUP BY a.ID_PAYS, n.NumInfopak
HAVING (a.ID_PAYS = 1) AND (n.NumInfopak <>
OR (a.ID_PAYS = 11)ORDER BY n.NumInfopak DESC
Le résultat, à ce jour, me donne :
Total récup
-----------
458
3
Je voudrais qu'il m'affiche 461.
Merci de votre aide
--
Frédéric BROUARD, MVP SQL Server. Expert SQL /
Livre SQL - col. Référence :
Le site du SQL, pour débutants et pros :
************************ www.datasapiens.com
.
J'ai bien essayé de comprendre et de corriger ma requete
en fonction de ta réponse mais sans trop de succes.
1) J'utilise un COUNT DISTINCT au début de ma requête ce
qui implique un HAVING non ?
2) En fait, voici le résumé de l'action en quoi consiste
mon travail :
J'envoie par télédistribution des paquets (d'où NUMINFOPAK
correspondant au N° du paquet) sur des bornes (d'où
NUMBORNES correspondant à leur N°) dans toute l'Europe
(d'où ID_PAYS correspondant à l'identifiant du Pays).
Le probleme est que pour la france, je possède 2 Segment
(ID_PAYS 1 et 11).
Mon but est de récupérer dans un premier temps le dernier
paquet récupéré (ORDER BY n.NumInfopak DESC) et de compter
le nombre de bornes qui l'ont récus. Pour chaque pays ca
ne pose pas trop de probleme, mais pour la France, il faut
que je récupère les 2 derniers paquets et que je cumule le
résultat dans 1 colonne.
La réponse que m'a fait Laurent:
---
SELECT sum([Total récup]) AS TotalFinal
FROM(ta requete) tmp
---
fonctionne, mais si tu vois une autre solution, je suis
tout ouïe.
Espérant avoir été le plus clair possible.
A+
Alex-----Message d'origine-----
Plusieurs erreurs dans ta requête...
1) le HAVING est un filtre sur les résultats. Il n'a
d'intérêt que dans le casd'un filtrage sur calculs d'agrégats (SUM, MAX, MIN,
COUNT, AVG...) donc utiliseun filtre WHERE
2) on ne comprend pas bien l'ordre logique du prédicat du
filtre...s'agit t-il de :
les ID_PAYS = 1 et (les NumInfopak <> N'1073741823 ou les
ID_PAYS = 11)ou bien
(les ID_PAYS = 1 et les NumInfopak <> N'1073741823) ou
les ID_PAYS = 11Pour être sûr de ce que tu veut met des parenthèses là ou
il les faut et non pasà chaque membre de la condition ce qui ne veut rien dire.
A partir de là tu verra êut être mieux comment sommer tes
2 premiers résultats.Mais je ne comprend pas la logique de ta requête... Que
veut tu faire exactement(en français ...)
SELECT TOP 2 COUNT(DISTINCT n.NumBornes) AS [Total récup]FROM PAYS pINNER JOIN AFFAIRES a
ON p.ID_PAYS = a.ID_PAYS
INNER JOIN BORNES b
ON a.ID_AFFAIRE = b.ID_AFFAIRE
INNER JOIN NEWDOWNLOAD n
ON b.BORNE = n.NumBornes
WHERE p.ID_PAYS = 1
AND n.NumInfopak <> N'1073741823' OR p.ID_PAYS = 11
GROUP BY p.ID_PAYS, n.NumInfopak
ORDER BY n.NumInfopak DESC
A +
Alexandre a écrit:Bonjour,
Je souhaiterais additionner les 2 résultats de ma
requêtemais je m'y perd un peu. Je suis sûr que vous saurez me
répondre...
Voici ma requête :
SELECT TOP 2 COUNT(DISTINCT n.NumBornes) AS [Total
récup]FROM dbo.PAYS p INNER JOIN
dbo.AFFAIRES a ON p.ID_PAYS = a.ID_PAYS INNER JOIN
dbo.BORNES b ON a.ID_AFFAIRE = b.ID_AFFAIRE INNER
JOINdbo.NEWDOWNLOAD n ON b.BORNE = n.NumBornes
GROUP BY a.ID_PAYS, n.NumInfopak
HAVING (a.ID_PAYS = 1) AND (n.NumInfopak <>
N'1073741823')OR (a.ID_PAYS = 11)ORDER BY n.NumInfopak DESC
Le résultat, à ce jour, me donne :
Total récup
-----------
458
3
Je voudrais qu'il m'affiche 461.
Merci de votre aide
--
Frédéric BROUARD, MVP SQL Server. Expert SQL /
spécialiste Delphi, webLivre SQL - col. Référence :
http://sqlpro.developpez.com/bookSQL.htmlLe site du SQL, pour débutants et pros :
http://sqlpro.developpez.com************************ www.datasapiens.com
*************************.
J'ai bien essayé de comprendre et de corriger ma requete
en fonction de ta réponse mais sans trop de succes.
1) J'utilise un COUNT DISTINCT au début de ma requête ce
qui implique un HAVING non ?
2) En fait, voici le résumé de l'action en quoi consiste
mon travail :
J'envoie par télédistribution des paquets (d'où NUMINFOPAK
correspondant au N° du paquet) sur des bornes (d'où
NUMBORNES correspondant à leur N°) dans toute l'Europe
(d'où ID_PAYS correspondant à l'identifiant du Pays).
Le probleme est que pour la france, je possède 2 Segment
(ID_PAYS 1 et 11).
Mon but est de récupérer dans un premier temps le dernier
paquet récupéré (ORDER BY n.NumInfopak DESC) et de compter
le nombre de bornes qui l'ont récus. Pour chaque pays ca
ne pose pas trop de probleme, mais pour la France, il faut
que je récupère les 2 derniers paquets et que je cumule le
résultat dans 1 colonne.
La réponse que m'a fait Laurent:
---
SELECT sum([Total récup]) AS TotalFinal
FROM(ta requete) tmp
---
fonctionne, mais si tu vois une autre solution, je suis
tout ouïe.
Espérant avoir été le plus clair possible.
A+
Alex
-----Message d'origine-----
Plusieurs erreurs dans ta requête...
1) le HAVING est un filtre sur les résultats. Il n'a
d'intérêt que dans le cas
d'un filtrage sur calculs d'agrégats (SUM, MAX, MIN,
COUNT, AVG...) donc utilise
un filtre WHERE
2) on ne comprend pas bien l'ordre logique du prédicat du
filtre...
s'agit t-il de :
les ID_PAYS = 1 et (les NumInfopak <> N'1073741823 ou les
ID_PAYS = 11)
ou bien
(les ID_PAYS = 1 et les NumInfopak <> N'1073741823) ou
les ID_PAYS = 11
Pour être sûr de ce que tu veut met des parenthèses là ou
il les faut et non pas
à chaque membre de la condition ce qui ne veut rien dire.
A partir de là tu verra êut être mieux comment sommer tes
2 premiers résultats.
Mais je ne comprend pas la logique de ta requête... Que
veut tu faire exactement
(en français ...)
SELECT TOP 2 COUNT(DISTINCT n.NumBornes) AS [Total récup]
FROM PAYS p
INNER JOIN AFFAIRES a
ON p.ID_PAYS = a.ID_PAYS
INNER JOIN BORNES b
ON a.ID_AFFAIRE = b.ID_AFFAIRE
INNER JOIN NEWDOWNLOAD n
ON b.BORNE = n.NumBornes
WHERE p.ID_PAYS = 1
AND n.NumInfopak <> N'1073741823' OR p.ID_PAYS = 11
GROUP BY p.ID_PAYS, n.NumInfopak
ORDER BY n.NumInfopak DESC
A +
Alexandre a écrit:
Bonjour,
Je souhaiterais additionner les 2 résultats de ma
requête
mais je m'y perd un peu. Je suis sûr que vous saurez me
répondre...
Voici ma requête :
SELECT TOP 2 COUNT(DISTINCT n.NumBornes) AS [Total
récup]
FROM dbo.PAYS p INNER JOIN
dbo.AFFAIRES a ON p.ID_PAYS = a.ID_PAYS INNER JOIN
dbo.BORNES b ON a.ID_AFFAIRE = b.ID_AFFAIRE INNER
JOIN
dbo.NEWDOWNLOAD n ON b.BORNE = n.NumBornes
GROUP BY a.ID_PAYS, n.NumInfopak
HAVING (a.ID_PAYS = 1) AND (n.NumInfopak <>
N'1073741823')
OR (a.ID_PAYS = 11)ORDER BY n.NumInfopak DESC
Le résultat, à ce jour, me donne :
Total récup
-----------
458
3
Je voudrais qu'il m'affiche 461.
Merci de votre aide
--
Frédéric BROUARD, MVP SQL Server. Expert SQL /
spécialiste Delphi, web
Livre SQL - col. Référence :
http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros :
http://sqlpro.developpez.com
************************ www.datasapiens.com
*************************
.
J'ai bien essayé de comprendre et de corriger ma requete
en fonction de ta réponse mais sans trop de succes.
1) J'utilise un COUNT DISTINCT au début de ma requête ce
qui implique un HAVING non ?
2) En fait, voici le résumé de l'action en quoi consiste
mon travail :
J'envoie par télédistribution des paquets (d'où NUMINFOPAK
correspondant au N° du paquet) sur des bornes (d'où
NUMBORNES correspondant à leur N°) dans toute l'Europe
(d'où ID_PAYS correspondant à l'identifiant du Pays).
Le probleme est que pour la france, je possède 2 Segment
(ID_PAYS 1 et 11).
Mon but est de récupérer dans un premier temps le dernier
paquet récupéré (ORDER BY n.NumInfopak DESC) et de compter
le nombre de bornes qui l'ont récus. Pour chaque pays ca
ne pose pas trop de probleme, mais pour la France, il faut
que je récupère les 2 derniers paquets et que je cumule le
résultat dans 1 colonne.
La réponse que m'a fait Laurent:
---
SELECT sum([Total récup]) AS TotalFinal
FROM(ta requete) tmp
---
fonctionne, mais si tu vois une autre solution, je suis
tout ouïe.
Espérant avoir été le plus clair possible.
A+
Alex-----Message d'origine-----
Plusieurs erreurs dans ta requête...
1) le HAVING est un filtre sur les résultats. Il n'a
d'intérêt que dans le casd'un filtrage sur calculs d'agrégats (SUM, MAX, MIN,
COUNT, AVG...) donc utiliseun filtre WHERE
2) on ne comprend pas bien l'ordre logique du prédicat du
filtre...s'agit t-il de :
les ID_PAYS = 1 et (les NumInfopak <> N'1073741823 ou les
ID_PAYS = 11)ou bien
(les ID_PAYS = 1 et les NumInfopak <> N'1073741823) ou
les ID_PAYS = 11Pour être sûr de ce que tu veut met des parenthèses là ou
il les faut et non pasà chaque membre de la condition ce qui ne veut rien dire.
A partir de là tu verra êut être mieux comment sommer tes
2 premiers résultats.Mais je ne comprend pas la logique de ta requête... Que
veut tu faire exactement(en français ...)
SELECT TOP 2 COUNT(DISTINCT n.NumBornes) AS [Total récup]FROM PAYS pINNER JOIN AFFAIRES a
ON p.ID_PAYS = a.ID_PAYS
INNER JOIN BORNES b
ON a.ID_AFFAIRE = b.ID_AFFAIRE
INNER JOIN NEWDOWNLOAD n
ON b.BORNE = n.NumBornes
WHERE p.ID_PAYS = 1
AND n.NumInfopak <> N'1073741823' OR p.ID_PAYS = 11
GROUP BY p.ID_PAYS, n.NumInfopak
ORDER BY n.NumInfopak DESC
A +
Alexandre a écrit:Bonjour,
Je souhaiterais additionner les 2 résultats de ma
requêtemais je m'y perd un peu. Je suis sûr que vous saurez me
répondre...
Voici ma requête :
SELECT TOP 2 COUNT(DISTINCT n.NumBornes) AS [Total
récup]FROM dbo.PAYS p INNER JOIN
dbo.AFFAIRES a ON p.ID_PAYS = a.ID_PAYS INNER JOIN
dbo.BORNES b ON a.ID_AFFAIRE = b.ID_AFFAIRE INNER
JOINdbo.NEWDOWNLOAD n ON b.BORNE = n.NumBornes
GROUP BY a.ID_PAYS, n.NumInfopak
HAVING (a.ID_PAYS = 1) AND (n.NumInfopak <>
N'1073741823')OR (a.ID_PAYS = 11)ORDER BY n.NumInfopak DESC
Le résultat, à ce jour, me donne :
Total récup
-----------
458
3
Je voudrais qu'il m'affiche 461.
Merci de votre aide
--
Frédéric BROUARD, MVP SQL Server. Expert SQL /
spécialiste Delphi, webLivre SQL - col. Référence :
http://sqlpro.developpez.com/bookSQL.htmlLe site du SQL, pour débutants et pros :
http://sqlpro.developpez.com************************ www.datasapiens.com
*************************.