Mettons une table A qui contient le champ CODE et le champ QTE. Mettons une
table B qui contient les champs NUMERO, CODE.
Pour chaque enregistrement de Table A (où code est unique), je génère X
enregistrements dans Table B, où X est égal à TableA.QTE.
Par exemple :
TableA.Code='TOTO'
TableA.QTE=3
--->
TableB.NUMERO=1
TableB.CODE='TOTO'
TableB.NUMERO=2
TableB.CODE='TOTO'
TableB.NUMERO=3
TableB.CODE='TOTO'
Il y a 3 enregistrements dans B pour TOTO parce que il y a 3 dans le champ
QTE de A.
OK.
Maintenant, et c'est là que je n'ai aucune idée et que je me permets de vous
solliciter, si après avoir généré les enregistrements dans TABLE B je
modifie à la baisse (à la hausse, ce n'est pas possible) la valeur du champ
QTE, je ne sais pas enlever de table B les enregistrements devenus inutiles
(les n derniers). Je ne peux pas, pour des raisons de compteur, supprimer
tous les enregistrements de Table B correspondant et les réécrire, ce qui
serait facile.
Dans l'exemple ci-dessus, si QTE=3 devient QTE=1, il faudrait supprimer les
2 derniers enregistrements de Table B où CODE='TOTO'.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrice
A supposer que NUMERO est séquentiel pour un même CODE, il faudrait supprimer WHERE CODE='TOTO' AND NUMERO>QTE ?
Sinon voir par exemple le mot clé TOP.
Après, difficile à dire sans savoir de quoi il s'agit, mais cela me parait un peu arbitraire (l'utilisateur ne risque t'il pas de vouloir supprimer plutôt la ligne 1 et de garder la 3 qui correspond aux informations qu'il veut garder ?). Si oui, une autre approche serait laisser l'utilisateur choisir les lignes à supprimer, QTE étant recalculé pour être égal au nombre de lignes restantes.
-- Patrice
"JM" a écrit dans le message de news:
Bonjour.
Mettons une table A qui contient le champ CODE et le champ QTE. Mettons
une
table B qui contient les champs NUMERO, CODE.
Pour chaque enregistrement de Table A (où code est unique), je génère X enregistrements dans Table B, où X est égal à TableA.QTE.
Par exemple :
TableA.Code='TOTO' TableA.QTE=3
--->
TableB.NUMERO=1 TableB.CODE='TOTO'
TableB.NUMERO=2 TableB.CODE='TOTO'
TableB.NUMERO=3 TableB.CODE='TOTO'
Il y a 3 enregistrements dans B pour TOTO parce que il y a 3 dans le champ QTE de A.
OK.
Maintenant, et c'est là que je n'ai aucune idée et que je me permets de
vous
solliciter, si après avoir généré les enregistrements dans TABLE B je modifie à la baisse (à la hausse, ce n'est pas possible) la valeur du
champ
QTE, je ne sais pas enlever de table B les enregistrements devenus
inutiles
(les n derniers). Je ne peux pas, pour des raisons de compteur, supprimer tous les enregistrements de Table B correspondant et les réécrire, ce qui serait facile.
Dans l'exemple ci-dessus, si QTE=3 devient QTE=1, il faudrait supprimer
les
2 derniers enregistrements de Table B où CODE='TOTO'.
Une piste ?
A vous lire, avec un grand merci !!!
A supposer que NUMERO est séquentiel pour un même CODE, il faudrait
supprimer WHERE CODE='TOTO' AND NUMERO>QTE ?
Sinon voir par exemple le mot clé TOP.
Après, difficile à dire sans savoir de quoi il s'agit, mais cela me parait
un peu arbitraire (l'utilisateur ne risque t'il pas de vouloir supprimer
plutôt la ligne 1 et de garder la 3 qui correspond aux informations qu'il
veut garder ?). Si oui, une autre approche serait laisser l'utilisateur
choisir les lignes à supprimer, QTE étant recalculé pour être égal au nombre
de lignes restantes.
--
Patrice
"JM" <jm@bidon.bidon> a écrit dans le message de
news:e145PHiNGHA.740@TK2MSFTNGP12.phx.gbl...
Bonjour.
Mettons une table A qui contient le champ CODE et le champ QTE. Mettons
une
table B qui contient les champs NUMERO, CODE.
Pour chaque enregistrement de Table A (où code est unique), je génère X
enregistrements dans Table B, où X est égal à TableA.QTE.
Par exemple :
TableA.Code='TOTO'
TableA.QTE=3
--->
TableB.NUMERO=1
TableB.CODE='TOTO'
TableB.NUMERO=2
TableB.CODE='TOTO'
TableB.NUMERO=3
TableB.CODE='TOTO'
Il y a 3 enregistrements dans B pour TOTO parce que il y a 3 dans le champ
QTE de A.
OK.
Maintenant, et c'est là que je n'ai aucune idée et que je me permets de
vous
solliciter, si après avoir généré les enregistrements dans TABLE B je
modifie à la baisse (à la hausse, ce n'est pas possible) la valeur du
champ
QTE, je ne sais pas enlever de table B les enregistrements devenus
inutiles
(les n derniers). Je ne peux pas, pour des raisons de compteur, supprimer
tous les enregistrements de Table B correspondant et les réécrire, ce qui
serait facile.
Dans l'exemple ci-dessus, si QTE=3 devient QTE=1, il faudrait supprimer
les
2 derniers enregistrements de Table B où CODE='TOTO'.
A supposer que NUMERO est séquentiel pour un même CODE, il faudrait supprimer WHERE CODE='TOTO' AND NUMERO>QTE ?
Sinon voir par exemple le mot clé TOP.
Après, difficile à dire sans savoir de quoi il s'agit, mais cela me parait un peu arbitraire (l'utilisateur ne risque t'il pas de vouloir supprimer plutôt la ligne 1 et de garder la 3 qui correspond aux informations qu'il veut garder ?). Si oui, une autre approche serait laisser l'utilisateur choisir les lignes à supprimer, QTE étant recalculé pour être égal au nombre de lignes restantes.
-- Patrice
"JM" a écrit dans le message de news:
Bonjour.
Mettons une table A qui contient le champ CODE et le champ QTE. Mettons
une
table B qui contient les champs NUMERO, CODE.
Pour chaque enregistrement de Table A (où code est unique), je génère X enregistrements dans Table B, où X est égal à TableA.QTE.
Par exemple :
TableA.Code='TOTO' TableA.QTE=3
--->
TableB.NUMERO=1 TableB.CODE='TOTO'
TableB.NUMERO=2 TableB.CODE='TOTO'
TableB.NUMERO=3 TableB.CODE='TOTO'
Il y a 3 enregistrements dans B pour TOTO parce que il y a 3 dans le champ QTE de A.
OK.
Maintenant, et c'est là que je n'ai aucune idée et que je me permets de
vous
solliciter, si après avoir généré les enregistrements dans TABLE B je modifie à la baisse (à la hausse, ce n'est pas possible) la valeur du
champ
QTE, je ne sais pas enlever de table B les enregistrements devenus
inutiles
(les n derniers). Je ne peux pas, pour des raisons de compteur, supprimer tous les enregistrements de Table B correspondant et les réécrire, ce qui serait facile.
Dans l'exemple ci-dessus, si QTE=3 devient QTE=1, il faudrait supprimer
les
2 derniers enregistrements de Table B où CODE='TOTO'.
Une piste ?
A vous lire, avec un grand merci !!!
JM
Merci Patrice.
NUMERO est séquentiel, mais sans rapport avec QTE. Par exemple, NUMERO sera FTT0128, FTT0129, FTT0130.
Il faut systématiquement supprimer les n dernières lignes, order by NUMERO. Par chance, c'est un arbitraire qui convient :-)
Il s'agit de numéros de série pour des produits, QTE étant la quantité de produits fabriqués. J'ai une commande pour 23 TOTO, je crée dans Table B 23 lignes pour TOTO, avec 23 numéros de série. Le client en annule 5, je change QTE de 23 en 18 et les 5 dernières lignes dans TABLE B sont inutiles..
Idéalement, il faudrait traiter automatiquement l'ensemble des lignes la nuit, l'opérateur n'ayant pas à se soucier de supprimer les lignes de Table B en trop. Je pensais faire une proc avec un cursor (?), mais je patine grave...
Merci encore.
"Patrice" a écrit dans le message de news:
A supposer que NUMERO est séquentiel pour un même CODE, il faudrait supprimer WHERE CODE='TOTO' AND NUMERO>QTE ?
Sinon voir par exemple le mot clé TOP.
Après, difficile à dire sans savoir de quoi il s'agit, mais cela me parait un peu arbitraire (l'utilisateur ne risque t'il pas de vouloir supprimer plutôt la ligne 1 et de garder la 3 qui correspond aux informations qu'il veut garder ?). Si oui, une autre approche serait laisser l'utilisateur choisir les lignes à supprimer, QTE étant recalculé pour être égal au
nombre
de lignes restantes.
-- Patrice
"JM" a écrit dans le message de news: > Bonjour. > > Mettons une table A qui contient le champ CODE et le champ QTE. Mettons une > table B qui contient les champs NUMERO, CODE. > > Pour chaque enregistrement de Table A (où code est unique), je génère X > enregistrements dans Table B, où X est égal à TableA.QTE. > > Par exemple : > > TableA.Code='TOTO' > TableA.QTE=3 > > ---> > > TableB.NUMERO=1 > TableB.CODE='TOTO' > > TableB.NUMERO=2 > TableB.CODE='TOTO' > > TableB.NUMERO=3 > TableB.CODE='TOTO' > > Il y a 3 enregistrements dans B pour TOTO parce que il y a 3 dans le
champ
> QTE de A. > > OK. > > Maintenant, et c'est là que je n'ai aucune idée et que je me permets de vous > solliciter, si après avoir généré les enregistrements dans TABLE B je > modifie à la baisse (à la hausse, ce n'est pas possible) la valeur du champ > QTE, je ne sais pas enlever de table B les enregistrements devenus inutiles > (les n derniers). Je ne peux pas, pour des raisons de compteur,
supprimer
> tous les enregistrements de Table B correspondant et les réécrire, ce
qui
> serait facile. > > Dans l'exemple ci-dessus, si QTE=3 devient QTE=1, il faudrait supprimer les > 2 derniers enregistrements de Table B où CODE='TOTO'. > > > Une piste ? > > A vous lire, avec un grand merci !!! > >
Merci Patrice.
NUMERO est séquentiel, mais sans rapport avec QTE. Par exemple, NUMERO sera
FTT0128, FTT0129, FTT0130.
Il faut systématiquement supprimer les n dernières lignes, order by NUMERO.
Par chance, c'est un arbitraire qui convient :-)
Il s'agit de numéros de série pour des produits, QTE étant la quantité de
produits fabriqués. J'ai une commande pour 23 TOTO, je crée dans Table B 23
lignes pour TOTO, avec 23 numéros de série. Le client en annule 5, je change
QTE de 23 en 18 et les 5 dernières lignes dans TABLE B sont inutiles..
Idéalement, il faudrait traiter automatiquement l'ensemble des lignes la
nuit, l'opérateur n'ayant pas à se soucier de supprimer les lignes de Table
B en trop. Je pensais faire une proc avec un cursor (?), mais je patine
grave...
Merci encore.
"Patrice" <a@bc.c> a écrit dans le message de
news:uWMLTeiNGHA.1460@TK2MSFTNGP10.phx.gbl...
A supposer que NUMERO est séquentiel pour un même CODE, il faudrait
supprimer WHERE CODE='TOTO' AND NUMERO>QTE ?
Sinon voir par exemple le mot clé TOP.
Après, difficile à dire sans savoir de quoi il s'agit, mais cela me parait
un peu arbitraire (l'utilisateur ne risque t'il pas de vouloir supprimer
plutôt la ligne 1 et de garder la 3 qui correspond aux informations qu'il
veut garder ?). Si oui, une autre approche serait laisser l'utilisateur
choisir les lignes à supprimer, QTE étant recalculé pour être égal au
nombre
de lignes restantes.
--
Patrice
"JM" <jm@bidon.bidon> a écrit dans le message de
news:e145PHiNGHA.740@TK2MSFTNGP12.phx.gbl...
> Bonjour.
>
> Mettons une table A qui contient le champ CODE et le champ QTE. Mettons
une
> table B qui contient les champs NUMERO, CODE.
>
> Pour chaque enregistrement de Table A (où code est unique), je génère X
> enregistrements dans Table B, où X est égal à TableA.QTE.
>
> Par exemple :
>
> TableA.Code='TOTO'
> TableA.QTE=3
>
> --->
>
> TableB.NUMERO=1
> TableB.CODE='TOTO'
>
> TableB.NUMERO=2
> TableB.CODE='TOTO'
>
> TableB.NUMERO=3
> TableB.CODE='TOTO'
>
> Il y a 3 enregistrements dans B pour TOTO parce que il y a 3 dans le
champ
> QTE de A.
>
> OK.
>
> Maintenant, et c'est là que je n'ai aucune idée et que je me permets de
vous
> solliciter, si après avoir généré les enregistrements dans TABLE B je
> modifie à la baisse (à la hausse, ce n'est pas possible) la valeur du
champ
> QTE, je ne sais pas enlever de table B les enregistrements devenus
inutiles
> (les n derniers). Je ne peux pas, pour des raisons de compteur,
supprimer
> tous les enregistrements de Table B correspondant et les réécrire, ce
qui
> serait facile.
>
> Dans l'exemple ci-dessus, si QTE=3 devient QTE=1, il faudrait supprimer
les
> 2 derniers enregistrements de Table B où CODE='TOTO'.
>
>
> Une piste ?
>
> A vous lire, avec un grand merci !!!
>
>
NUMERO est séquentiel, mais sans rapport avec QTE. Par exemple, NUMERO sera FTT0128, FTT0129, FTT0130.
Il faut systématiquement supprimer les n dernières lignes, order by NUMERO. Par chance, c'est un arbitraire qui convient :-)
Il s'agit de numéros de série pour des produits, QTE étant la quantité de produits fabriqués. J'ai une commande pour 23 TOTO, je crée dans Table B 23 lignes pour TOTO, avec 23 numéros de série. Le client en annule 5, je change QTE de 23 en 18 et les 5 dernières lignes dans TABLE B sont inutiles..
Idéalement, il faudrait traiter automatiquement l'ensemble des lignes la nuit, l'opérateur n'ayant pas à se soucier de supprimer les lignes de Table B en trop. Je pensais faire une proc avec un cursor (?), mais je patine grave...
Merci encore.
"Patrice" a écrit dans le message de news:
A supposer que NUMERO est séquentiel pour un même CODE, il faudrait supprimer WHERE CODE='TOTO' AND NUMERO>QTE ?
Sinon voir par exemple le mot clé TOP.
Après, difficile à dire sans savoir de quoi il s'agit, mais cela me parait un peu arbitraire (l'utilisateur ne risque t'il pas de vouloir supprimer plutôt la ligne 1 et de garder la 3 qui correspond aux informations qu'il veut garder ?). Si oui, une autre approche serait laisser l'utilisateur choisir les lignes à supprimer, QTE étant recalculé pour être égal au
nombre
de lignes restantes.
-- Patrice
"JM" a écrit dans le message de news: > Bonjour. > > Mettons une table A qui contient le champ CODE et le champ QTE. Mettons une > table B qui contient les champs NUMERO, CODE. > > Pour chaque enregistrement de Table A (où code est unique), je génère X > enregistrements dans Table B, où X est égal à TableA.QTE. > > Par exemple : > > TableA.Code='TOTO' > TableA.QTE=3 > > ---> > > TableB.NUMERO=1 > TableB.CODE='TOTO' > > TableB.NUMERO=2 > TableB.CODE='TOTO' > > TableB.NUMERO=3 > TableB.CODE='TOTO' > > Il y a 3 enregistrements dans B pour TOTO parce que il y a 3 dans le
champ
> QTE de A. > > OK. > > Maintenant, et c'est là que je n'ai aucune idée et que je me permets de vous > solliciter, si après avoir généré les enregistrements dans TABLE B je > modifie à la baisse (à la hausse, ce n'est pas possible) la valeur du champ > QTE, je ne sais pas enlever de table B les enregistrements devenus inutiles > (les n derniers). Je ne peux pas, pour des raisons de compteur,
supprimer
> tous les enregistrements de Table B correspondant et les réécrire, ce
qui
> serait facile. > > Dans l'exemple ci-dessus, si QTE=3 devient QTE=1, il faudrait supprimer les > 2 derniers enregistrements de Table B où CODE='TOTO'. > > > Une piste ? > > A vous lire, avec un grand merci !!! > >
Med Bouchenafa
Une idée à explorer ... SET ROWCOUNT = 2 DELETE FROM TableB WHERE CODE='TOTO' SET ROWCOUNT = 0
Bien cordialement Med Bouchenafa
"JM" wrote in message news:
Bonjour.
Mettons une table A qui contient le champ CODE et le champ QTE. Mettons une table B qui contient les champs NUMERO, CODE.
Pour chaque enregistrement de Table A (où code est unique), je génère X enregistrements dans Table B, où X est égal à TableA.QTE.
Par exemple :
TableA.Code='TOTO' TableA.QTE=3
--->
TableB.NUMERO=1 TableB.CODE='TOTO'
TableB.NUMERO=2 TableB.CODE='TOTO'
TableB.NUMERO=3 TableB.CODE='TOTO'
Il y a 3 enregistrements dans B pour TOTO parce que il y a 3 dans le champ QTE de A.
OK.
Maintenant, et c'est là que je n'ai aucune idée et que je me permets de vous solliciter, si après avoir généré les enregistrements dans TABLE B je modifie à la baisse (à la hausse, ce n'est pas possible) la valeur du champ QTE, je ne sais pas enlever de table B les enregistrements devenus inutiles (les n derniers). Je ne peux pas, pour des raisons de compteur, supprimer tous les enregistrements de Table B correspondant et les réécrire, ce qui serait facile.
Dans l'exemple ci-dessus, si QTE=3 devient QTE=1, il faudrait supprimer les 2 derniers enregistrements de Table B où CODE='TOTO'.
Une piste ?
A vous lire, avec un grand merci !!!
Une idée à explorer ...
SET ROWCOUNT = 2
DELETE FROM TableB WHERE CODE='TOTO'
SET ROWCOUNT = 0
Bien cordialement
Med Bouchenafa
"JM" <jm@bidon.bidon> wrote in message
news:e145PHiNGHA.740@TK2MSFTNGP12.phx.gbl...
Bonjour.
Mettons une table A qui contient le champ CODE et le champ QTE. Mettons
une
table B qui contient les champs NUMERO, CODE.
Pour chaque enregistrement de Table A (où code est unique), je génère X
enregistrements dans Table B, où X est égal à TableA.QTE.
Par exemple :
TableA.Code='TOTO'
TableA.QTE=3
--->
TableB.NUMERO=1
TableB.CODE='TOTO'
TableB.NUMERO=2
TableB.CODE='TOTO'
TableB.NUMERO=3
TableB.CODE='TOTO'
Il y a 3 enregistrements dans B pour TOTO parce que il y a 3 dans le champ
QTE de A.
OK.
Maintenant, et c'est là que je n'ai aucune idée et que je me permets de
vous
solliciter, si après avoir généré les enregistrements dans TABLE B je
modifie à la baisse (à la hausse, ce n'est pas possible) la valeur du
champ
QTE, je ne sais pas enlever de table B les enregistrements devenus
inutiles
(les n derniers). Je ne peux pas, pour des raisons de compteur, supprimer
tous les enregistrements de Table B correspondant et les réécrire, ce qui
serait facile.
Dans l'exemple ci-dessus, si QTE=3 devient QTE=1, il faudrait supprimer
les
2 derniers enregistrements de Table B où CODE='TOTO'.
Une idée à explorer ... SET ROWCOUNT = 2 DELETE FROM TableB WHERE CODE='TOTO' SET ROWCOUNT = 0
Bien cordialement Med Bouchenafa
"JM" wrote in message news:
Bonjour.
Mettons une table A qui contient le champ CODE et le champ QTE. Mettons une table B qui contient les champs NUMERO, CODE.
Pour chaque enregistrement de Table A (où code est unique), je génère X enregistrements dans Table B, où X est égal à TableA.QTE.
Par exemple :
TableA.Code='TOTO' TableA.QTE=3
--->
TableB.NUMERO=1 TableB.CODE='TOTO'
TableB.NUMERO=2 TableB.CODE='TOTO'
TableB.NUMERO=3 TableB.CODE='TOTO'
Il y a 3 enregistrements dans B pour TOTO parce que il y a 3 dans le champ QTE de A.
OK.
Maintenant, et c'est là que je n'ai aucune idée et que je me permets de vous solliciter, si après avoir généré les enregistrements dans TABLE B je modifie à la baisse (à la hausse, ce n'est pas possible) la valeur du champ QTE, je ne sais pas enlever de table B les enregistrements devenus inutiles (les n derniers). Je ne peux pas, pour des raisons de compteur, supprimer tous les enregistrements de Table B correspondant et les réécrire, ce qui serait facile.
Dans l'exemple ci-dessus, si QTE=3 devient QTE=1, il faudrait supprimer les 2 derniers enregistrements de Table B où CODE='TOTO'.
Une piste ?
A vous lire, avec un grand merci !!!
bruno reiter
delete tableB from tableB C join ( select A.code, B.num from tableA A join ( select code, count(*) as qte, max(numero) as num from tableB group by code ) as B on A.code = B.code where A.qte < B.qte ) as D on C.code = D.code and C.numero = D.num
en passant plusieurs fois cette requete ça doit éliminer les enrs en trop (pas testé)
br
"JM" a écrit dans le message de news:
Bonjour.
Mettons une table A qui contient le champ CODE et le champ QTE. Mettons une table B qui contient les champs NUMERO, CODE.
Pour chaque enregistrement de Table A (où code est unique), je génère X enregistrements dans Table B, où X est égal à TableA.QTE.
Par exemple :
TableA.Code='TOTO' TableA.QTE=3
--->
TableB.NUMERO=1 TableB.CODE='TOTO'
TableB.NUMERO=2 TableB.CODE='TOTO'
TableB.NUMERO=3 TableB.CODE='TOTO'
Il y a 3 enregistrements dans B pour TOTO parce que il y a 3 dans le champ QTE de A.
OK.
Maintenant, et c'est là que je n'ai aucune idée et que je me permets de vous solliciter, si après avoir généré les enregistrements dans TABLE B je modifie à la baisse (à la hausse, ce n'est pas possible) la valeur du champ QTE, je ne sais pas enlever de table B les enregistrements devenus inutiles (les n derniers). Je ne peux pas, pour des raisons de compteur, supprimer tous les enregistrements de Table B correspondant et les réécrire, ce qui serait facile.
Dans l'exemple ci-dessus, si QTE=3 devient QTE=1, il faudrait supprimer les 2 derniers enregistrements de Table B où CODE='TOTO'.
Une piste ?
A vous lire, avec un grand merci !!!
delete tableB
from tableB C
join
(
select A.code, B.num
from tableA A
join
(
select code, count(*) as qte, max(numero) as num
from tableB
group by code
) as B
on A.code = B.code
where A.qte < B.qte
) as D
on C.code = D.code
and C.numero = D.num
en passant plusieurs fois cette requete ça doit éliminer les enrs en trop
(pas testé)
br
"JM" <jm@bidon.bidon> a écrit dans le message de news:
e145PHiNGHA.740@TK2MSFTNGP12.phx.gbl...
Bonjour.
Mettons une table A qui contient le champ CODE et le champ QTE. Mettons
une
table B qui contient les champs NUMERO, CODE.
Pour chaque enregistrement de Table A (où code est unique), je génère X
enregistrements dans Table B, où X est égal à TableA.QTE.
Par exemple :
TableA.Code='TOTO'
TableA.QTE=3
--->
TableB.NUMERO=1
TableB.CODE='TOTO'
TableB.NUMERO=2
TableB.CODE='TOTO'
TableB.NUMERO=3
TableB.CODE='TOTO'
Il y a 3 enregistrements dans B pour TOTO parce que il y a 3 dans le champ
QTE de A.
OK.
Maintenant, et c'est là que je n'ai aucune idée et que je me permets de
vous
solliciter, si après avoir généré les enregistrements dans TABLE B je
modifie à la baisse (à la hausse, ce n'est pas possible) la valeur du
champ
QTE, je ne sais pas enlever de table B les enregistrements devenus
inutiles
(les n derniers). Je ne peux pas, pour des raisons de compteur, supprimer
tous les enregistrements de Table B correspondant et les réécrire, ce qui
serait facile.
Dans l'exemple ci-dessus, si QTE=3 devient QTE=1, il faudrait supprimer
les
2 derniers enregistrements de Table B où CODE='TOTO'.
delete tableB from tableB C join ( select A.code, B.num from tableA A join ( select code, count(*) as qte, max(numero) as num from tableB group by code ) as B on A.code = B.code where A.qte < B.qte ) as D on C.code = D.code and C.numero = D.num
en passant plusieurs fois cette requete ça doit éliminer les enrs en trop (pas testé)
br
"JM" a écrit dans le message de news:
Bonjour.
Mettons une table A qui contient le champ CODE et le champ QTE. Mettons une table B qui contient les champs NUMERO, CODE.
Pour chaque enregistrement de Table A (où code est unique), je génère X enregistrements dans Table B, où X est égal à TableA.QTE.
Par exemple :
TableA.Code='TOTO' TableA.QTE=3
--->
TableB.NUMERO=1 TableB.CODE='TOTO'
TableB.NUMERO=2 TableB.CODE='TOTO'
TableB.NUMERO=3 TableB.CODE='TOTO'
Il y a 3 enregistrements dans B pour TOTO parce que il y a 3 dans le champ QTE de A.
OK.
Maintenant, et c'est là que je n'ai aucune idée et que je me permets de vous solliciter, si après avoir généré les enregistrements dans TABLE B je modifie à la baisse (à la hausse, ce n'est pas possible) la valeur du champ QTE, je ne sais pas enlever de table B les enregistrements devenus inutiles (les n derniers). Je ne peux pas, pour des raisons de compteur, supprimer tous les enregistrements de Table B correspondant et les réécrire, ce qui serait facile.
Dans l'exemple ci-dessus, si QTE=3 devient QTE=1, il faudrait supprimer les 2 derniers enregistrements de Table B où CODE='TOTO'.