Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Séléction des lignes non marquées pour suppression

9 réponses
Avatar
EmanuelL
Bonjour à tous,

Comment exclure de lignes marquées pour suppression (avec DELETE...)
dans une séléction?
En VFP on met SET DELETED ON ou SELECT * FROM MaTable WHERE NOT
DELETED()...

Merci d'avance.

--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org

9 réponses

Avatar
Sylvain Lafontaine
Il n'y a rien de tel avec SQL-Server: une fois délété, la ligne est vraiment
délétée et non pas seulement marquée pour délétion. Évidemment, il y a
aussi la question des transactions ouvertes mais je ne pense pas que cela
soit votre question. (Si vous pensez vraiment au cas des transactions
ouvertes, reposez votre question en précisant ce fait.)

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"EmanuelL" wrote in message
news:
Bonjour à tous,

Comment exclure de lignes marquées pour suppression (avec DELETE...) dans
une séléction?
En VFP on met SET DELETED ON ou SELECT * FROM MaTable WHERE NOT
DELETED()...

Merci d'avance.

--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org




Avatar
Michel LEVY
Emmanuel,

comme Sylvain te l'indique, côté serveur, le DELETE.... delete!
il te faut gérer ça côté client (dans ton cursor VFP ou ton recordset .net)

--
Michel Lévy
Communauté Francophone des Professionnels FoxPro
Pour un développement durable...
http://www.atoutfox.org
--
"EmanuelL" a écrit dans le message de news:

Bonjour à tous,

Comment exclure de lignes marquées pour suppression (avec DELETE...) dans
une séléction?
En VFP on met SET DELETED ON ou SELECT * FROM MaTable WHERE NOT
DELETED()...

Merci d'avance.

--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org




Avatar
EmanuelL
Merci à Sylvain Lafontaine et à Michel des vos réponses.

En faite, ce qui m'interpèle ces sont les résultats ci-dessous.
Les données viennent de SQLSERVER 2005 d'un ERP qu'on vient d'intégrer
chez nous.

1) La sélection prend aussi les lignes supprimées, ces lignes ne sont
pas visibles quand je parcours la table JOURNAL depuis SQL Server
Management Studio.
Pourquoi si elles étaient complètement supprimées, elles apparaîssent
dans cette requête?

Mon exemple extrait les données de la table JOURNAL sous certaines
conditions des autres tables.

SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr, JL.Datum,
JL.Anzahlext
FROM Journal AS JL, UserCode AS UC, Abteilung AS AB, Mitarbeiter AS MA
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND MA.Mitarbeiter_Nr = JL.Mitarbeiter_Nr
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND AB.Projekt_Nr = JL.Projekt_Nr
AND AB.Abt_UcNr = UC.UserCode_Nr
AND AB.Abt_UcNr BETWEEN 100 AND 580
AND UC.UserCode_Nr BETWEEN 100 AND 800
AND UC.Lv = 0
AND UC.UserTab_Nr = 1
AND JL.Mitarbeiter_Nr = 12

8854 12 1500003 2008-02-05 00:00:00.000 0.25
!8855 12 1500141 2008-02-05 00:00:00.000 0.25
8855 12 1500141 2008-02-05 00:00:00.000 0.25
11237 12 1000301 2008-02-13 00:00:00.000 0.25
11240 12 1000301 2008-02-14 00:00:00.000 0.25
11241 12 1500003 2008-02-14 00:00:00.000 0.50
!11242 12 1500141 2008-02-14 00:00:00.000 0.50
11242 12 1500141 2008-02-14 00:00:00.000 0.50
11248 12 1000301 2008-02-15 00:00:00.000 0.75
!13662 12 1500141 2008-02-18 00:00:00.000 0.25
13662 12 1500141 2008-02-18 00:00:00.000 0.25

! ligne supprimée.
:-Z


2) En simpliafifiant la même requête le résultat ne prend plus en
compte ces lignes "supprimées".
Je ne comprend pas cette différence!

SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr, JL.Datum,
JL.Anzahlext
FROM Journal AS JL, Mitarbeiter AS MA
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND MA.Mitarbeiter_Nr = JL.Mitarbeiter_Nr
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND JL.Mitarbeiter_Nr = 12

8854 12 1500003 2008-02-05 00:00:00.000 0.25
8855 12 1500141 2008-02-05 00:00:00.000 0.25
11237 12 1000301 2008-02-13 00:00:00.000 0.25
11240 12 1000301 2008-02-14 00:00:00.000 0.25
11241 12 1500003 2008-02-14 00:00:00.000 0.50
11242 12 1500141 2008-02-14 00:00:00.000 0.50
11248 12 1000301 2008-02-15 00:00:00.000 0.75
13662 12 1500141 2008-02-18 00:00:00.000 0.25
:D


Merci de m'éclairer.

--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org
Avatar
Fred BROUARD
Faîtes un order by SUBSTRING(JL.Journal_Nr, 2, 4) pour voir...

A +

PS : la prochaine fois écrivez vos requêtes avec des joins. Filtrer dans
la clause where est obsolète depuis de 1992 et ne facilite pas la
lecture ni l'étude, ni même les perfs....

SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr,
JL.Datum, JL.Anzahlext
FROM Journal AS JL
INNER JOIN Mitarbeiter AS MA
ON JL.Mitarbeiter_Nr = MA.Mitarbeiter_Nr
INNER JOIN Abteilung AS AB
ON JL.Projekt_Nr = AB.Projekt_Nr
INNER JOIN UserCode AS UC
ON UC.UserCode_Nr = AB.Abt_UcNr
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND JL.Mitarbeiter_Nr = 12
AND UC.UserCode_Nr BETWEEN 100 AND 800
AND UC.Lv = 0
AND UC.UserTab_Nr = 1
AND AB.Abt_UcNr BETWEEN 100 AND 580


SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr,
JL.Datum, JL.Anzahlext
FROM Journal AS JL
INNER JOIN Mitarbeiter AS MA
ON JL.Mitarbeiter_Nr = MA.Mitarbeiter_Nr
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND JL.Mitarbeiter_Nr = 12


EmanuelL a écrit :
Merci à Sylvain Lafontaine et à Michel des vos réponses.

En faite, ce qui m'interpèle ces sont les résultats ci-dessous.
Les données viennent de SQLSERVER 2005 d'un ERP qu'on vient d'intégrer
chez nous.

1) La sélection prend aussi les lignes supprimées, ces lignes ne sont
pas visibles quand je parcours la table JOURNAL depuis SQL Server
Management Studio.
Pourquoi si elles étaient complètement supprimées, elles apparaîssent
dans cette requête?

Mon exemple extrait les données de la table JOURNAL sous certaines
conditions des autres tables.

SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr, JL.Datum,
JL.Anzahlext
FROM Journal AS JL, UserCode AS UC, Abteilung AS AB, Mitarbeiter AS MA
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND MA.Mitarbeiter_Nr = JL.Mitarbeiter_Nr
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND AB.Projekt_Nr = JL.Projekt_Nr
AND AB.Abt_UcNr = UC.UserCode_Nr
AND AB.Abt_UcNr BETWEEN 100 AND 580
AND UC.UserCode_Nr BETWEEN 100 AND 800
AND UC.Lv = 0
AND UC.UserTab_Nr = 1
AND JL.Mitarbeiter_Nr = 12

8854 12 1500003 2008-02-05 00:00:00.000 0.25
!8855 12 1500141 2008-02-05 00:00:00.000 0.25
8855 12 1500141 2008-02-05 00:00:00.000 0.25
11237 12 1000301 2008-02-13 00:00:00.000 0.25
11240 12 1000301 2008-02-14 00:00:00.000 0.25
11241 12 1500003 2008-02-14 00:00:00.000 0.50
!11242 12 1500141 2008-02-14 00:00:00.000 0.50
11242 12 1500141 2008-02-14 00:00:00.000 0.50
11248 12 1000301 2008-02-15 00:00:00.000 0.75
!13662 12 1500141 2008-02-18 00:00:00.000 0.25
13662 12 1500141 2008-02-18 00:00:00.000 0.25

! ligne supprimée.
:-Z


2) En simpliafifiant la même requête le résultat ne prend plus en compte
ces lignes "supprimées".
Je ne comprend pas cette différence!

SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr, JL.Datum,
JL.Anzahlext
FROM Journal AS JL, Mitarbeiter AS MA
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND MA.Mitarbeiter_Nr = JL.Mitarbeiter_Nr
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND JL.Mitarbeiter_Nr = 12

8854 12 1500003 2008-02-05 00:00:00.000 0.25
8855 12 1500141 2008-02-05 00:00:00.000 0.25
11237 12 1000301 2008-02-13 00:00:00.000 0.25
11240 12 1000301 2008-02-14 00:00:00.000 0.25
11241 12 1500003 2008-02-14 00:00:00.000 0.50
11242 12 1500141 2008-02-14 00:00:00.000 0.50
11248 12 1000301 2008-02-15 00:00:00.000 0.75
13662 12 1500141 2008-02-18 00:00:00.000 0.25
:D


Merci de m'éclairer.





--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
Avatar
Fred BROUARD
Faîtes un order by SUBSTRING(JL.Journal_Nr, 2, 4) pour voir...

A +

PS : la prochaine fois écrivez vos requêtes avec des joins. Filtrer dans
la clause where est obsolète depuis de 1992 et ne facilite pas la
lecture ni l'étude, ni même les perfs....

SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr,
JL.Datum, JL.Anzahlext
FROM Journal AS JL
INNER JOIN Mitarbeiter AS MA
ON JL.Mitarbeiter_Nr = MA.Mitarbeiter_Nr
INNER JOIN Abteilung AS AB
ON JL.Projekt_Nr = AB.Projekt_Nr
INNER JOIN UserCode AS UC
ON UC.UserCode_Nr = AB.Abt_UcNr
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND JL.Mitarbeiter_Nr = 12
AND UC.UserCode_Nr BETWEEN 100 AND 800
AND UC.Lv = 0
AND UC.UserTab_Nr = 1
AND AB.Abt_UcNr BETWEEN 100 AND 580


SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr,
JL.Datum, JL.Anzahlext
FROM Journal AS JL
INNER JOIN Mitarbeiter AS MA
ON JL.Mitarbeiter_Nr = MA.Mitarbeiter_Nr
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND JL.Mitarbeiter_Nr = 12


EmanuelL a écrit :
Merci à Sylvain Lafontaine et à Michel des vos réponses.

En faite, ce qui m'interpèle ces sont les résultats ci-dessous.
Les données viennent de SQLSERVER 2005 d'un ERP qu'on vient d'intégrer
chez nous.

1) La sélection prend aussi les lignes supprimées, ces lignes ne sont
pas visibles quand je parcours la table JOURNAL depuis SQL Server
Management Studio.
Pourquoi si elles étaient complètement supprimées, elles apparaîssent
dans cette requête?

Mon exemple extrait les données de la table JOURNAL sous certaines
conditions des autres tables.

SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr, JL.Datum,
JL.Anzahlext
FROM Journal AS JL, UserCode AS UC, Abteilung AS AB, Mitarbeiter AS MA
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND MA.Mitarbeiter_Nr = JL.Mitarbeiter_Nr
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND AB.Projekt_Nr = JL.Projekt_Nr
AND AB.Abt_UcNr = UC.UserCode_Nr
AND AB.Abt_UcNr BETWEEN 100 AND 580
AND UC.UserCode_Nr BETWEEN 100 AND 800
AND UC.Lv = 0
AND UC.UserTab_Nr = 1
AND JL.Mitarbeiter_Nr = 12

8854 12 1500003 2008-02-05 00:00:00.000 0.25
!8855 12 1500141 2008-02-05 00:00:00.000 0.25
8855 12 1500141 2008-02-05 00:00:00.000 0.25
11237 12 1000301 2008-02-13 00:00:00.000 0.25
11240 12 1000301 2008-02-14 00:00:00.000 0.25
11241 12 1500003 2008-02-14 00:00:00.000 0.50
!11242 12 1500141 2008-02-14 00:00:00.000 0.50
11242 12 1500141 2008-02-14 00:00:00.000 0.50
11248 12 1000301 2008-02-15 00:00:00.000 0.75
!13662 12 1500141 2008-02-18 00:00:00.000 0.25
13662 12 1500141 2008-02-18 00:00:00.000 0.25

! ligne supprimée.
:-Z


2) En simpliafifiant la même requête le résultat ne prend plus en compte
ces lignes "supprimées".
Je ne comprend pas cette différence!

SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr, JL.Datum,
JL.Anzahlext
FROM Journal AS JL, Mitarbeiter AS MA
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND MA.Mitarbeiter_Nr = JL.Mitarbeiter_Nr
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND JL.Mitarbeiter_Nr = 12

8854 12 1500003 2008-02-05 00:00:00.000 0.25
8855 12 1500141 2008-02-05 00:00:00.000 0.25
11237 12 1000301 2008-02-13 00:00:00.000 0.25
11240 12 1000301 2008-02-14 00:00:00.000 0.25
11241 12 1500003 2008-02-14 00:00:00.000 0.50
11242 12 1500141 2008-02-14 00:00:00.000 0.50
11248 12 1000301 2008-02-15 00:00:00.000 0.75
13662 12 1500141 2008-02-18 00:00:00.000 0.25
:D


Merci de m'éclairer.





--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
Avatar
EmanuelL
Cher Fred Brouard,

Merci de votre réponse et de votre recommandation.

Faîtes un order by SUBSTRING(JL.Journal_Nr, 2, 4) pour voir...



Msg 8116, Niveau 16, État 1, Ligne 1
Argument data type int is invalid for argument 1 of substring function.

Car JL.Journal_Nr est un entier.

;-)

Fred BROUARD a utilisé son clavier pour écrire :
Faîtes un order by SUBSTRING(JL.Journal_Nr, 2, 4) pour voir...

A +

PS : la prochaine fois écrivez vos requêtes avec des joins. Filtrer dans la
clause where est obsolète depuis de 1992 et ne facilite pas la lecture ni
l'étude, ni même les perfs....

SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr,
JL.Datum, JL.Anzahlext
FROM Journal AS JL
INNER JOIN Mitarbeiter AS MA
ON JL.Mitarbeiter_Nr = MA.Mitarbeiter_Nr
INNER JOIN Abteilung AS AB
ON JL.Projekt_Nr = AB.Projekt_Nr
INNER JOIN UserCode AS UC
ON UC.UserCode_Nr = AB.Abt_UcNr
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND JL.Mitarbeiter_Nr = 12
AND UC.UserCode_Nr BETWEEN 100 AND 800
AND UC.Lv = 0
AND UC.UserTab_Nr = 1
AND AB.Abt_UcNr BETWEEN 100 AND 580


SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr,
JL.Datum, JL.Anzahlext
FROM Journal AS JL
INNER JOIN Mitarbeiter AS MA
ON JL.Mitarbeiter_Nr = MA.Mitarbeiter_Nr
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND JL.Mitarbeiter_Nr = 12


EmanuelL a écrit :
Merci à Sylvain Lafontaine et à Michel des vos réponses.

En faite, ce qui m'interpèle ces sont les résultats ci-dessous.
Les données viennent de SQLSERVER 2005 d'un ERP qu'on vient d'intégrer chez
nous.

1) La sélection prend aussi les lignes supprimées, ces lignes ne sont pas
visibles quand je parcours la table JOURNAL depuis SQL Server Management
Studio.
Pourquoi si elles étaient complètement supprimées, elles apparaîssent dans
cette requête?

Mon exemple extrait les données de la table JOURNAL sous certaines
conditions des autres tables.

SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr, JL.Datum,
JL.Anzahlext
FROM Journal AS JL, UserCode AS UC, Abteilung AS AB, Mitarbeiter AS MA
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND MA.Mitarbeiter_Nr = JL.Mitarbeiter_Nr
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND AB.Projekt_Nr = JL.Projekt_Nr
AND AB.Abt_UcNr = UC.UserCode_Nr
AND AB.Abt_UcNr BETWEEN 100 AND 580
AND UC.UserCode_Nr BETWEEN 100 AND 800
AND UC.Lv = 0
AND UC.UserTab_Nr = 1
AND JL.Mitarbeiter_Nr = 12

8854 12 1500003 2008-02-05 00:00:00.000 0.25
!8855 12 1500141 2008-02-05 00:00:00.000 0.25
8855 12 1500141 2008-02-05 00:00:00.000 0.25
11237 12 1000301 2008-02-13 00:00:00.000 0.25
11240 12 1000301 2008-02-14 00:00:00.000 0.25
11241 12 1500003 2008-02-14 00:00:00.000 0.50
!11242 12 1500141 2008-02-14 00:00:00.000 0.50
11242 12 1500141 2008-02-14 00:00:00.000 0.50
11248 12 1000301 2008-02-15 00:00:00.000 0.75
!13662 12 1500141 2008-02-18 00:00:00.000 0.25
13662 12 1500141 2008-02-18 00:00:00.000 0.25

! ligne supprimée.
:-Z


2) En simpliafifiant la même requête le résultat ne prend plus en compte
ces lignes "supprimées".
Je ne comprend pas cette différence!

SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr, JL.Datum,
JL.Anzahlext
FROM Journal AS JL, Mitarbeiter AS MA
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND MA.Mitarbeiter_Nr = JL.Mitarbeiter_Nr
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND JL.Mitarbeiter_Nr = 12

8854 12 1500003 2008-02-05 00:00:00.000 0.25
8855 12 1500141 2008-02-05 00:00:00.000 0.25
11237 12 1000301 2008-02-13 00:00:00.000 0.25
11240 12 1000301 2008-02-14 00:00:00.000 0.25
11241 12 1500003 2008-02-14 00:00:00.000 0.50
11242 12 1500141 2008-02-14 00:00:00.000 0.50
11248 12 1000301 2008-02-15 00:00:00.000 0.75
13662 12 1500141 2008-02-18 00:00:00.000 0.25
:D


Merci de m'éclairer.






--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org
Avatar
Sylvain Lafontaine
Cela dépend probablement du programme à partir duquel vous faites exécuter
ces commandes sql. Si vous les faites exécuter à l'intérieur du programme
ERP, alors il ne s'agit pas probablement pas d'une vrai requête SQL et
certains des AND que vous voyez là ne sont pas des filtres WHERE mais des
paramètres de contrôle destinés et interprété par le système ERP.

En clair, des choses telles que UC.Lv = 0 sont probablement des contrôles
(paramètres) et vous ne devez pas les modifier/enlever sans savoir ce que
vous faites (ie., sans lire le manuel d'instruction de l'ERP que vous
utilisez). Cela peut être particulièrement dangereux si vous faites des
commandes Update ou Delete.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"EmanuelL" wrote in message
news:
Merci à Sylvain Lafontaine et à Michel des vos réponses.

En faite, ce qui m'interpèle ces sont les résultats ci-dessous.
Les données viennent de SQLSERVER 2005 d'un ERP qu'on vient d'intégrer
chez nous.

1) La sélection prend aussi les lignes supprimées, ces lignes ne sont pas
visibles quand je parcours la table JOURNAL depuis SQL Server Management
Studio.
Pourquoi si elles étaient complètement supprimées, elles apparaîssent dans
cette requête?

Mon exemple extrait les données de la table JOURNAL sous certaines
conditions des autres tables.

SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr, JL.Datum,
JL.Anzahlext
FROM Journal AS JL, UserCode AS UC, Abteilung AS AB, Mitarbeiter AS MA
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND MA.Mitarbeiter_Nr = JL.Mitarbeiter_Nr
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND AB.Projekt_Nr = JL.Projekt_Nr
AND AB.Abt_UcNr = UC.UserCode_Nr
AND AB.Abt_UcNr BETWEEN 100 AND 580
AND UC.UserCode_Nr BETWEEN 100 AND 800
AND UC.Lv = 0
AND UC.UserTab_Nr = 1
AND JL.Mitarbeiter_Nr = 12

8854 12 1500003 2008-02-05 00:00:00.000 0.25
!8855 12 1500141 2008-02-05 00:00:00.000 0.25
8855 12 1500141 2008-02-05 00:00:00.000 0.25
11237 12 1000301 2008-02-13 00:00:00.000 0.25
11240 12 1000301 2008-02-14 00:00:00.000 0.25
11241 12 1500003 2008-02-14 00:00:00.000 0.50
!11242 12 1500141 2008-02-14 00:00:00.000 0.50
11242 12 1500141 2008-02-14 00:00:00.000 0.50
11248 12 1000301 2008-02-15 00:00:00.000 0.75
!13662 12 1500141 2008-02-18 00:00:00.000 0.25
13662 12 1500141 2008-02-18 00:00:00.000 0.25

! ligne supprimée.
:-Z


2) En simpliafifiant la même requête le résultat ne prend plus en compte
ces lignes "supprimées".
Je ne comprend pas cette différence!

SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr, JL.Datum,
JL.Anzahlext
FROM Journal AS JL, Mitarbeiter AS MA
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND MA.Mitarbeiter_Nr = JL.Mitarbeiter_Nr
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND JL.Mitarbeiter_Nr = 12

8854 12 1500003 2008-02-05 00:00:00.000 0.25
8855 12 1500141 2008-02-05 00:00:00.000 0.25
11237 12 1000301 2008-02-13 00:00:00.000 0.25
11240 12 1000301 2008-02-14 00:00:00.000 0.25
11241 12 1500003 2008-02-14 00:00:00.000 0.50
11242 12 1500141 2008-02-14 00:00:00.000 0.50
11248 12 1000301 2008-02-15 00:00:00.000 0.75
13662 12 1500141 2008-02-18 00:00:00.000 0.25
:D


Merci de m'éclairer.

--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org




Avatar
EmanuelL
Merci de votre réponse et désolé du retard de la mienne.

UC.Lv = 0 se trouve dans certaines tables pour indiquer la ligne n'est
pas supprimé, suppression depuis l'ERP.

La suppression de leignes de la table journal se font depuis l'ERP, que
je pense c'est une suppression SQLServer car cette table ne contient
pas le champ Lv contraitement à certaines.

Quand je lance la qequête ci dessous limitée à 2 table les lignes
supprimées n'apparaissent pas, par contre elles apparaissent quand j'ai
plus des 2 tables dans la requête, voilà lôrigine de mes doûtes.


Sylvain Lafontaine a couché sur son écran :
Cela dépend probablement du programme à partir duquel vous faites exécuter
ces commandes sql. Si vous les faites exécuter à l'intérieur du programme
ERP, alors il ne s'agit pas probablement pas d'une vrai requête SQL et
certains des AND que vous voyez là ne sont pas des filtres WHERE mais des
paramètres de contrôle destinés et interprété par le système ERP.

En clair, des choses telles que UC.Lv = 0 sont probablement des contrôles
(paramètres) et vous ne devez pas les modifier/enlever sans savoir ce que
vous faites (ie., sans lire le manuel d'instruction de l'ERP que vous
utilisez). Cela peut être particulièrement dangereux si vous faites des
commandes Update ou Delete.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"EmanuelL" wrote in message
news:
Merci à Sylvain Lafontaine et à Michel des vos réponses.

En faite, ce qui m'interpèle ces sont les résultats ci-dessous.
Les données viennent de SQLSERVER 2005 d'un ERP qu'on vient d'intégrer chez
nous.

1) La sélection prend aussi les lignes supprimées, ces lignes ne sont pas
visibles quand je parcours la table JOURNAL depuis SQL Server Management
Studio.
Pourquoi si elles étaient complètement supprimées, elles apparaîssent dans
cette requête?

Mon exemple extrait les données de la table JOURNAL sous certaines
conditions des autres tables.

SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr, JL.Datum,
JL.Anzahlext
FROM Journal AS JL, UserCode AS UC, Abteilung AS AB, Mitarbeiter AS MA
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND MA.Mitarbeiter_Nr = JL.Mitarbeiter_Nr
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND AB.Projekt_Nr = JL.Projekt_Nr
AND AB.Abt_UcNr = UC.UserCode_Nr
AND AB.Abt_UcNr BETWEEN 100 AND 580
AND UC.UserCode_Nr BETWEEN 100 AND 800
AND UC.Lv = 0
AND UC.UserTab_Nr = 1
AND JL.Mitarbeiter_Nr = 12

8854 12 1500003 2008-02-05 00:00:00.000 0.25
!8855 12 1500141 2008-02-05 00:00:00.000 0.25
8855 12 1500141 2008-02-05 00:00:00.000 0.25
11237 12 1000301 2008-02-13 00:00:00.000 0.25
11240 12 1000301 2008-02-14 00:00:00.000 0.25
11241 12 1500003 2008-02-14 00:00:00.000 0.50
!11242 12 1500141 2008-02-14 00:00:00.000 0.50
11242 12 1500141 2008-02-14 00:00:00.000 0.50
11248 12 1000301 2008-02-15 00:00:00.000 0.75
!13662 12 1500141 2008-02-18 00:00:00.000 0.25
13662 12 1500141 2008-02-18 00:00:00.000 0.25

! ligne supprimée.
:-Z


2) En simpliafifiant la même requête le résultat ne prend plus en compte
ces lignes "supprimées".
Je ne comprend pas cette différence!

SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr, JL.Datum,
JL.Anzahlext
FROM Journal AS JL, Mitarbeiter AS MA
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND MA.Mitarbeiter_Nr = JL.Mitarbeiter_Nr
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND JL.Mitarbeiter_Nr = 12

8854 12 1500003 2008-02-05 00:00:00.000 0.25
8855 12 1500141 2008-02-05 00:00:00.000 0.25
11237 12 1000301 2008-02-13 00:00:00.000 0.25
11240 12 1000301 2008-02-14 00:00:00.000 0.25
11241 12 1500003 2008-02-14 00:00:00.000 0.50
11242 12 1500141 2008-02-14 00:00:00.000 0.50
11248 12 1000301 2008-02-15 00:00:00.000 0.75
13662 12 1500141 2008-02-18 00:00:00.000 0.25
:D


Merci de m'éclairer.

--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org







--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org
Avatar
Sylvain Lafontaine
Comme je vous l'ai dit dans mon message précédent, lorsque vous faites
affaire à un ERP, souvent les commandes SQL que vous envoyez ne sont pas de
vraies requêtes SQL et certaines des colonnes et des tables que vous écrivez
dans les *requêtes* sql n'existent pas vraiment dans la base de données et
sont uniquement destinés/utilisés comme paramètres de contrôle pour et par
l'ERP.

Vous ne devez pas voir l'ERP et les commandes SQL que vous lui envoyez comme
étant une base de données SQL ordinaires avec des requêtes SQL ordinaires.
Dans le cas d'un ERP, ce n'est souvent pas le cas.

En clair: vous devriez lire le manuel d'instruction de l'ERP que vous
utilisez; sinon vous allez gaffer.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"EmanuelL" wrote in message
news:
Merci de votre réponse et désolé du retard de la mienne.

UC.Lv = 0 se trouve dans certaines tables pour indiquer la ligne n'est pas
supprimé, suppression depuis l'ERP.

La suppression de leignes de la table journal se font depuis l'ERP, que je
pense c'est une suppression SQLServer car cette table ne contient pas le
champ Lv contraitement à certaines.

Quand je lance la qequête ci dessous limitée à 2 table les lignes
supprimées n'apparaissent pas, par contre elles apparaissent quand j'ai
plus des 2 tables dans la requête, voilà lôrigine de mes doûtes.


Sylvain Lafontaine a couché sur son écran :
Cela dépend probablement du programme à partir duquel vous faites
exécuter ces commandes sql. Si vous les faites exécuter à l'intérieur du
programme ERP, alors il ne s'agit pas probablement pas d'une vrai requête
SQL et certains des AND que vous voyez là ne sont pas des filtres WHERE
mais des paramètres de contrôle destinés et interprété par le système
ERP.

En clair, des choses telles que UC.Lv = 0 sont probablement des contrôles
(paramètres) et vous ne devez pas les modifier/enlever sans savoir ce que
vous faites (ie., sans lire le manuel d'instruction de l'ERP que vous
utilisez). Cela peut être particulièrement dangereux si vous faites des
commandes Update ou Delete.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"EmanuelL" wrote in message
news:
Merci à Sylvain Lafontaine et à Michel des vos réponses.

En faite, ce qui m'interpèle ces sont les résultats ci-dessous.
Les données viennent de SQLSERVER 2005 d'un ERP qu'on vient d'intégrer
chez nous.

1) La sélection prend aussi les lignes supprimées, ces lignes ne sont
pas visibles quand je parcours la table JOURNAL depuis SQL Server
Management Studio.
Pourquoi si elles étaient complètement supprimées, elles apparaîssent
dans cette requête?

Mon exemple extrait les données de la table JOURNAL sous certaines
conditions des autres tables.

SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr, JL.Datum,
JL.Anzahlext
FROM Journal AS JL, UserCode AS UC, Abteilung AS AB, Mitarbeiter AS MA
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND MA.Mitarbeiter_Nr = JL.Mitarbeiter_Nr
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND AB.Projekt_Nr = JL.Projekt_Nr
AND AB.Abt_UcNr = UC.UserCode_Nr
AND AB.Abt_UcNr BETWEEN 100 AND 580
AND UC.UserCode_Nr BETWEEN 100 AND 800
AND UC.Lv = 0
AND UC.UserTab_Nr = 1
AND JL.Mitarbeiter_Nr = 12

8854 12 1500003 2008-02-05 00:00:00.000 0.25
!8855 12 1500141 2008-02-05 00:00:00.000 0.25
8855 12 1500141 2008-02-05 00:00:00.000 0.25
11237 12 1000301 2008-02-13 00:00:00.000 0.25
11240 12 1000301 2008-02-14 00:00:00.000 0.25
11241 12 1500003 2008-02-14 00:00:00.000 0.50
!11242 12 1500141 2008-02-14 00:00:00.000 0.50
11242 12 1500141 2008-02-14 00:00:00.000 0.50
11248 12 1000301 2008-02-15 00:00:00.000 0.75
!13662 12 1500141 2008-02-18 00:00:00.000 0.25
13662 12 1500141 2008-02-18 00:00:00.000 0.25

! ligne supprimée.
:-Z


2) En simpliafifiant la même requête le résultat ne prend plus en compte
ces lignes "supprimées".
Je ne comprend pas cette différence!

SELECT JL.Journal_Nr, JL.Mitarbeiter_Nr, JL.Projekt_Nr, JL.Datum,
JL.Anzahlext
FROM Journal AS JL, Mitarbeiter AS MA
WHERE JL.Datum BETWEEN '2008-02-01' AND '2008-02-29'
AND MA.Mitarbeiter_Nr = JL.Mitarbeiter_Nr
AND JL.Projekt_Nr BETWEEN 1000000 AND 5809999
AND JL.Leistung_Nr BETWEEN 1000 AND 5200
AND JL.Mitarbeiter_Nr = 12

8854 12 1500003 2008-02-05 00:00:00.000 0.25
8855 12 1500141 2008-02-05 00:00:00.000 0.25
11237 12 1000301 2008-02-13 00:00:00.000 0.25
11240 12 1000301 2008-02-14 00:00:00.000 0.25
11241 12 1500003 2008-02-14 00:00:00.000 0.50
11242 12 1500141 2008-02-14 00:00:00.000 0.50
11248 12 1000301 2008-02-15 00:00:00.000 0.75
13662 12 1500141 2008-02-18 00:00:00.000 0.25
:D


Merci de m'éclairer.

--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org







--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org