PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → Conditions SQL incompatibles ?
Conditions SQL incompatibles ?
Débuté par coeurgan, 15 avr. 2004 18:41 - 6 réponses
Posté le 15 avril 2004 - 18:41
Bonjour,

J'ai une requète SQL qui refuse de s'éxécuter, après de laborieux tests je
constate que trois conditions (un groupe de 2 et un groupe de 1) semblent
"incompatibles". La requète fonctionne avec l'un ou l'autre groupe mais pas
avec les deux. De même si on ne laisse que ces trois conditions la requète
fonctionne.

Bref un certain nombre de combinaisons fonctionnent mais pas celle que je
voudrais.

Voici la requète telle que je la souhaite (telle que je la rêve?) : Chez moi
elle ne fonctionne pas, en retirant la dernière condition ça marche, de même
en retirant les deux conditions précédentes. Quelqu'un aurait-il une idée,
une expérience à me faire partager, ou même quelques mots de consolation ça
me ferait déjà plaisir...



SELECT
CONTACT.VCH_NOM AS VCH_NOM_CONTACT,
CONTACT.VCH_PRENOM AS VCH_PRENOM_CONTACT,
CONTACT.VCH_NUMERO_COMPTE AS VCH_NUMERO_COMPTE_CONTACT,
CONTACT.NUM_CIVILITE AS NUM_CIVILITE_CONTACT,
NPAI.IDT_NPAI AS IDT_NPAI,
NPAI.NUM_CONTACT AS NUM_CONTACT,
NPAI.NUM_STATUT AS NUM_STATUT,
ADRESSE_OLD.VCH_COMPLEMENT_DESTINATAIRE AS VCH_COMPLEMENT_DESTINATAIRE_OLD,
ADRESSE_OLD.VCH_COMPLEMENT_GEOGRAPHIQUE AS VCH_COMPLEMENT_GEOGRAPHIQUE_OLD,
ADRESSE_OLD.VCH_NUM_VOIE AS VCH_NUM_VOIE_OLD,
ADRESSE_OLD.NUM_TYPE_VOIE AS NUM_TYPE_VOIE_OLD,
ADRESSE_OLD.VCH_NOM_RUE AS VCH_NOM_RUE_OLD,
ADRESSE_OLD.VCH_CODE_POSTAL AS VCH_CODE_POSTAL_OLD,
ADRESSE_OLD.VCH_VILLE AS VCH_VILLE_OLD,
ADRESSE_NEW.VCH_COMPLEMENT_DESTINATAIRE AS VCH_COMPLEMENT_DESTINATAIRE_NEW,
ADRESSE_NEW.VCH_COMPLEMENT_GEOGRAPHIQUE AS VCH_COMPLEMENT_GEOGRAPHIQUE_NEW,
ADRESSE_NEW.VCH_NUM_VOIE AS VCH_NUM_VOIE_NEW,
ADRESSE_NEW.NUM_TYPE_VOIE AS NUM_TYPE_VOIE_NEW,
ADRESSE_NEW.VCH_NOM_RUE AS VCH_NOM_RUE_NEW,
ADRESSE_NEW.VCH_CODE_POSTAL AS VCH_CODE_POSTAL_NEW,
ADRESSE_NEW.VCH_VILLE AS VCH_VILLE_NEW
FROM
TBL_NPAI AS NPAI,
TBL_CONTACT AS CONTACT,
TBL_ADRESSE AS ADRESSE_OLD,
TBL_TYPE_ADRESSE AS TYPE_ADRESSE_OLD,
TBL_ADRESSE AS ADRESSE_NEW,
TBL_TYPE_ADRESSE AS TYPE_ADRESSE_NEW
WHERE
NPAI.NUM_CONTACT = CONTACT.IDT_CONTACT
AND ADRESSE_OLD.NUM_CONTACT = CONTACT.IDT_CONTACT
AND ADRESSE_NEW.NUM_CONTACT = CONTACT.IDT_CONTACT
AND TYPE_ADRESSE_NEW.IDT_TYPE_ADRESSE = ADRESSE_NEW.NUM_TYPE_ADRESSE
AND TYPE_ADRESSE_NEW.VCH_CODE = 'EC'
AND CONTACT.VCH_NUMERO_COMPTE = ''
AND CONTACT.VCH_NOM = ''
AND TYPE_ADRESSE_OLD.IDT_TYPE_ADRESSE = ADRESSE_OLD.NUM_TYPE_ADRESSE
AND TYPE_ADRESSE_OLD.VCH_CODE = 'I'
AND NPAI.IDT_NPAI = 1

d'avance merci

coeurgan
Posté le 15 avril 2004 - 19:15
Il faudrait préciser sur quel SGBD tu effectues cette requete.
C'est marrant j'ai l'impression que ce n'est pas une base HF.
Peut être que c'est la normalisation que l'on sent dans ta table comme dans
ta requête qui me fait penser plutôt à une table Oracle ou autre.

Si mes affabulations sont exactes; si c'est de l'oracle, du mySQl, du
SQLServer, (d'abord je te félicite) je te conseille d'essayer d'abord ta
requete avec un frontal SQL.

Si elle est bonne, regardes si tu ne coupes pas ta commande (???) ou essaie
à partir d'un SQLExec.
Vérifie aussi qu'il n'y a pas un pb de Null Value (utiliser NVL, ifNull,
coalesce ???)
A part ça, rien de spécialement choquant dans ta requête.

coeurgan wrote:
Bonjour,

J'ai une requète SQL qui refuse de s'éxécuter, après de laborieux
tests je constate que trois conditions (un groupe de 2 et un groupe
de 1) semblent "incompatibles". La requète fonctionne avec l'un ou
l'autre groupe mais pas avec les deux. De même si on ne laisse que
ces trois conditions la requète fonctionne.

Bref un certain nombre de combinaisons fonctionnent mais pas celle
que je voudrais.

Voici la requète telle que je la souhaite (telle que je la rêve?) :
Chez moi elle ne fonctionne pas, en retirant la dernière condition ça
marche, de même en retirant les deux conditions précédentes.
Quelqu'un aurait-il une idée, une expérience à me faire partager, ou
même quelques mots de consolation ça me ferait déjà plaisir...



SELECT
CONTACT.VCH_NOM AS VCH_NOM_CONTACT,
CONTACT.VCH_PRENOM AS VCH_PRENOM_CONTACT,
CONTACT.VCH_NUMERO_COMPTE AS VCH_NUMERO_COMPTE_CONTACT,
CONTACT.NUM_CIVILITE AS NUM_CIVILITE_CONTACT,
NPAI.IDT_NPAI AS IDT_NPAI,
NPAI.NUM_CONTACT AS NUM_CONTACT,
NPAI.NUM_STATUT AS NUM_STATUT,
ADRESSE_OLD.VCH_COMPLEMENT_DESTINATAIRE AS
VCH_COMPLEMENT_DESTINATAIRE_OLD,
ADRESSE_OLD.VCH_COMPLEMENT_GEOGRAPHIQUE AS
VCH_COMPLEMENT_GEOGRAPHIQUE_OLD, ADRESSE_OLD.VCH_NUM_VOIE AS
VCH_NUM_VOIE_OLD,
ADRESSE_OLD.NUM_TYPE_VOIE AS NUM_TYPE_VOIE_OLD,
ADRESSE_OLD.VCH_NOM_RUE AS VCH_NOM_RUE_OLD,
ADRESSE_OLD.VCH_CODE_POSTAL AS VCH_CODE_POSTAL_OLD,
ADRESSE_OLD.VCH_VILLE AS VCH_VILLE_OLD,
ADRESSE_NEW.VCH_COMPLEMENT_DESTINATAIRE AS
VCH_COMPLEMENT_DESTINATAIRE_NEW,
ADRESSE_NEW.VCH_COMPLEMENT_GEOGRAPHIQUE AS
VCH_COMPLEMENT_GEOGRAPHIQUE_NEW, ADRESSE_NEW.VCH_NUM_VOIE AS
VCH_NUM_VOIE_NEW,
ADRESSE_NEW.NUM_TYPE_VOIE AS NUM_TYPE_VOIE_NEW,
ADRESSE_NEW.VCH_NOM_RUE AS VCH_NOM_RUE_NEW,
ADRESSE_NEW.VCH_CODE_POSTAL AS VCH_CODE_POSTAL_NEW,
ADRESSE_NEW.VCH_VILLE AS VCH_VILLE_NEW
FROM
TBL_NPAI AS NPAI,
TBL_CONTACT AS CONTACT,
TBL_ADRESSE AS ADRESSE_OLD,
TBL_TYPE_ADRESSE AS TYPE_ADRESSE_OLD,
TBL_ADRESSE AS ADRESSE_NEW,
TBL_TYPE_ADRESSE AS TYPE_ADRESSE_NEW
WHERE
NPAI.NUM_CONTACT = CONTACT.IDT_CONTACT
AND ADRESSE_OLD.NUM_CONTACT = CONTACT.IDT_CONTACT
AND ADRESSE_NEW.NUM_CONTACT = CONTACT.IDT_CONTACT
AND TYPE_ADRESSE_NEW.IDT_TYPE_ADRESSE = ADRESSE_NEW.NUM_TYPE_ADRESSE
AND TYPE_ADRESSE_NEW.VCH_CODE = 'EC'
AND CONTACT.VCH_NUMERO_COMPTE = ''
AND CONTACT.VCH_NOM = ''
AND TYPE_ADRESSE_OLD.IDT_TYPE_ADRESSE = ADRESSE_OLD.NUM_TYPE_ADRESSE
AND TYPE_ADRESSE_OLD.VCH_CODE = 'I'
AND NPAI.IDT_NPAI = 1

d'avance merci

coeurgan


--
Eric
Posté le 15 avril 2004 - 19:44
Arf, j'aurais du préciser effectivement, c'est dans une base Hyperfile, j'ai
créé une requète et j'ai entré le code SQL avec mes petits doigts.
Malheureusement...

Merci de ta réponse en tous cas, si toi ou quelqu'un d'autre avez des idées
(je suis prêt à tout entendre...) n'hésitez pas.

Coeurgan



"Roumegou" <roumegou@wanadoo.fr> a écrit dans le message de
news:407eab77@news.pcsoft.fr...

Il faudrait préciser sur quel SGBD tu effectues cette requete.
C'est marrant j'ai l'impression que ce n'est pas une base HF.
Peut être que c'est la normalisation que l'on sent dans ta table comme

dans
ta requête qui me fait penser plutôt à une table Oracle ou autre.

Si mes affabulations sont exactes; si c'est de l'oracle, du mySQl, du
SQLServer, (d'abord je te félicite) je te conseille d'essayer d'abord ta
requete avec un frontal SQL.

Si elle est bonne, regardes si tu ne coupes pas ta commande (???) ou

essaie
à partir d'un SQLExec.
Vérifie aussi qu'il n'y a pas un pb de Null Value (utiliser NVL, ifNull,
coalesce ???)
A part ça, rien de spécialement choquant dans ta requête.

coeurgan wrote:
Bonjour,

J'ai une requète SQL qui refuse de s'éxécuter, après de laborieux
tests je constate que trois conditions (un groupe de 2 et un groupe
de 1) semblent "incompatibles". La requète fonctionne avec l'un ou
l'autre groupe mais pas avec les deux. De même si on ne laisse que
ces trois conditions la requète fonctionne.

Bref un certain nombre de combinaisons fonctionnent mais pas celle
que je voudrais.

Voici la requète telle que je la souhaite (telle que je la rêve?) :
Chez moi elle ne fonctionne pas, en retirant la dernière condition ça
marche, de même en retirant les deux conditions précédentes.
Quelqu'un aurait-il une idée, une expérience à me faire partager, ou
même quelques mots de consolation ça me ferait déjà plaisir...



SELECT
CONTACT.VCH_NOM AS VCH_NOM_CONTACT,
CONTACT.VCH_PRENOM AS VCH_PRENOM_CONTACT,
CONTACT.VCH_NUMERO_COMPTE AS VCH_NUMERO_COMPTE_CONTACT,
CONTACT.NUM_CIVILITE AS NUM_CIVILITE_CONTACT,
NPAI.IDT_NPAI AS IDT_NPAI,
NPAI.NUM_CONTACT AS NUM_CONTACT,
NPAI.NUM_STATUT AS NUM_STATUT,
ADRESSE_OLD.VCH_COMPLEMENT_DESTINATAIRE AS
VCH_COMPLEMENT_DESTINATAIRE_OLD,
ADRESSE_OLD.VCH_COMPLEMENT_GEOGRAPHIQUE AS
VCH_COMPLEMENT_GEOGRAPHIQUE_OLD, ADRESSE_OLD.VCH_NUM_VOIE AS
VCH_NUM_VOIE_OLD,
ADRESSE_OLD.NUM_TYPE_VOIE AS NUM_TYPE_VOIE_OLD,
ADRESSE_OLD.VCH_NOM_RUE AS VCH_NOM_RUE_OLD,
ADRESSE_OLD.VCH_CODE_POSTAL AS VCH_CODE_POSTAL_OLD,
ADRESSE_OLD.VCH_VILLE AS VCH_VILLE_OLD,
ADRESSE_NEW.VCH_COMPLEMENT_DESTINATAIRE AS
VCH_COMPLEMENT_DESTINATAIRE_NEW,
ADRESSE_NEW.VCH_COMPLEMENT_GEOGRAPHIQUE AS
VCH_COMPLEMENT_GEOGRAPHIQUE_NEW, ADRESSE_NEW.VCH_NUM_VOIE AS
VCH_NUM_VOIE_NEW,
ADRESSE_NEW.NUM_TYPE_VOIE AS NUM_TYPE_VOIE_NEW,
ADRESSE_NEW.VCH_NOM_RUE AS VCH_NOM_RUE_NEW,
ADRESSE_NEW.VCH_CODE_POSTAL AS VCH_CODE_POSTAL_NEW,
ADRESSE_NEW.VCH_VILLE AS VCH_VILLE_NEW
FROM
TBL_NPAI AS NPAI,
TBL_CONTACT AS CONTACT,
TBL_ADRESSE AS ADRESSE_OLD,
TBL_TYPE_ADRESSE AS TYPE_ADRESSE_OLD,
TBL_ADRESSE AS ADRESSE_NEW,
TBL_TYPE_ADRESSE AS TYPE_ADRESSE_NEW
WHERE
NPAI.NUM_CONTACT = CONTACT.IDT_CONTACT
AND ADRESSE_OLD.NUM_CONTACT = CONTACT.IDT_CONTACT
AND ADRESSE_NEW.NUM_CONTACT = CONTACT.IDT_CONTACT
AND TYPE_ADRESSE_NEW.IDT_TYPE_ADRESSE = ADRESSE_NEW.NUM_TYPE_ADRESSE
AND TYPE_ADRESSE_NEW.VCH_CODE = 'EC'
AND CONTACT.VCH_NUMERO_COMPTE = ''
AND CONTACT.VCH_NOM = ''
AND TYPE_ADRESSE_OLD.IDT_TYPE_ADRESSE = ADRESSE_OLD.NUM_TYPE_ADRESSE
AND TYPE_ADRESSE_OLD.VCH_CODE = 'I'
AND NPAI.IDT_NPAI = 1

d'avance merci

coeurgan

--
Eric

Posté le 19 avril 2004 - 13:51
Bonjour,

J'ai l'impression que tu cherches pour un contact un vch_code = 'I' (dans
adresse_old) ET un vch_code = 'EC' (dans adresse_new)
or adresse_old et adresse_new sont en faite une même table

Il faudrait peut être utiliser qu'une table adresse et mettre vch_code =
'I' OU un vch_code = 'EC'

Est-ce q'un contact peut avoir plusieurs adresses ?
Car si oui dans ta requete j'ai l'impression que tu ne prendra que la premiere
et donc le vch_code ne peut pas être différent d'où le plantage de ta requete.
et dans ce cas il te faut utiliser une requete imbriquée.

Dis-moi exactement quelle résultat tu veux !


"coeurgan" <coeurgan@yahoo.fr> wrote:

Bonjour,

J'ai une requète SQL qui refuse de s'éxécuter, après de laborieux tests

je
constate que trois conditions (un groupe de 2 et un groupe de 1) semblent
"incompatibles". La requète fonctionne avec l'un ou l'autre groupe mais

pas
avec les deux. De même si on ne laisse que ces trois conditions la requète
fonctionne.

Bref un certain nombre de combinaisons fonctionnent mais pas celle que je
voudrais.

Voici la requète telle que je la souhaite (telle que je la rêve?) : Chez

moi
>elle ne fonctionne pas, en retirant la dernière condition ça marche, de
même
en retirant les deux conditions précédentes. Quelqu'un aurait-il une idée,
une expérience à me faire partager, ou même quelques mots de consolation

ça
me ferait déjà plaisir...



SELECT
CONTACT.VCH_NOM AS VCH_NOM_CONTACT,
CONTACT.VCH_PRENOM AS VCH_PRENOM_CONTACT,
CONTACT.VCH_NUMERO_COMPTE AS VCH_NUMERO_COMPTE_CONTACT,
CONTACT.NUM_CIVILITE AS NUM_CIVILITE_CONTACT,
NPAI.IDT_NPAI AS IDT_NPAI,
NPAI.NUM_CONTACT AS NUM_CONTACT,
NPAI.NUM_STATUT AS NUM_STATUT,
ADRESSE_OLD.VCH_COMPLEMENT_DESTINATAIRE AS VCH_COMPLEMENT_DESTINATAIRE_OLD,
ADRESSE_OLD.VCH_COMPLEMENT_GEOGRAPHIQUE AS VCH_COMPLEMENT_GEOGRAPHIQUE_OLD,
ADRESSE_OLD.VCH_NUM_VOIE AS VCH_NUM_VOIE_OLD,
ADRESSE_OLD.NUM_TYPE_VOIE AS NUM_TYPE_VOIE_OLD,
ADRESSE_OLD.VCH_NOM_RUE AS VCH_NOM_RUE_OLD,
ADRESSE_OLD.VCH_CODE_POSTAL AS VCH_CODE_POSTAL_OLD,
ADRESSE_OLD.VCH_VILLE AS VCH_VILLE_OLD,
ADRESSE_NEW.VCH_COMPLEMENT_DESTINATAIRE AS VCH_COMPLEMENT_DESTINATAIRE_NEW,
ADRESSE_NEW.VCH_COMPLEMENT_GEOGRAPHIQUE AS VCH_COMPLEMENT_GEOGRAPHIQUE_NEW,
ADRESSE_NEW.VCH_NUM_VOIE AS VCH_NUM_VOIE_NEW,
ADRESSE_NEW.NUM_TYPE_VOIE AS NUM_TYPE_VOIE_NEW,
ADRESSE_NEW.VCH_NOM_RUE AS VCH_NOM_RUE_NEW,
ADRESSE_NEW.VCH_CODE_POSTAL AS VCH_CODE_POSTAL_NEW,
ADRESSE_NEW.VCH_VILLE AS VCH_VILLE_NEW
FROM
TBL_NPAI AS NPAI,
TBL_CONTACT AS CONTACT,
TBL_ADRESSE AS ADRESSE_OLD,
TBL_TYPE_ADRESSE AS TYPE_ADRESSE_OLD,
TBL_ADRESSE AS ADRESSE_NEW,
TBL_TYPE_ADRESSE AS TYPE_ADRESSE_NEW
WHERE
NPAI.NUM_CONTACT = CONTACT.IDT_CONTACT
AND ADRESSE_OLD.NUM_CONTACT = CONTACT.IDT_CONTACT
AND ADRESSE_NEW.NUM_CONTACT = CONTACT.IDT_CONTACT
AND TYPE_ADRESSE_NEW.IDT_TYPE_ADRESSE = ADRESSE_NEW.NUM_TYPE_ADRESSE
AND TYPE_ADRESSE_NEW.VCH_CODE = 'EC'
AND CONTACT.VCH_NUMERO_COMPTE = ''
AND CONTACT.VCH_NOM = ''
AND TYPE_ADRESSE_OLD.IDT_TYPE_ADRESSE = ADRESSE_OLD.NUM_TYPE_ADRESSE
AND TYPE_ADRESSE_OLD.VCH_CODE = 'I'
AND NPAI.IDT_NPAI = 1

d'avance merci

coeurgan




Posté le 19 avril 2004 - 18:02
Mon contact peut et doit avoir deux adresses, et j'aurais besoin de
récupérer les données de ces deux adresses dans la même requète.

Je vais bientôt pleurer...

coeurgan
"So07" <sonia_vernet@hotmail.com> a écrit dans le message de
news:4083a315$1@news.pcsoft.fr...


Bonjour,

J'ai l'impression que tu cherches pour un contact un vch_code = 'I' (dans
adresse_old) ET un vch_code = 'EC' (dans adresse_new)
or adresse_old et adresse_new sont en faite une même table

Il faudrait peut être utiliser qu'une table adresse et mettre vch_code =
'I' OU un vch_code = 'EC'

Est-ce q'un contact peut avoir plusieurs adresses ?
Car si oui dans ta requete j'ai l'impression que tu ne prendra que la

premiere
> et donc le vch_code ne peut pas être différent d'où le plantage de ta
requete.
et dans ce cas il te faut utiliser une requete imbriquée.

Dis-moi exactement quelle résultat tu veux !


"coeurgan" <coeurgan@yahoo.fr> wrote:

Bonjour,

J'ai une requète SQL qui refuse de s'éxécuter, après de laborieux tests
je

constate que trois conditions (un groupe de 2 et un groupe de 1) semblent
"incompatibles". La requète fonctionne avec l'un ou l'autre groupe mais
pas

avec les deux. De même si on ne laisse que ces trois conditions la

requète
fonctionne.

Bref un certain nombre de combinaisons fonctionnent mais pas celle que je
voudrais.

Voici la requète telle que je la souhaite (telle que je la rêve?) : Chez
moi

elle ne fonctionne pas, en retirant la dernière condition ça marche, de
même

en retirant les deux conditions précédentes. Quelqu'un aurait-il une

idée,
une expérience à me faire partager, ou même quelques mots de consolation
ça

me ferait déjà plaisir...



SELECT
CONTACT.VCH_NOM AS VCH_NOM_CONTACT,
CONTACT.VCH_PRENOM AS VCH_PRENOM_CONTACT,
CONTACT.VCH_NUMERO_COMPTE AS VCH_NUMERO_COMPTE_CONTACT,
CONTACT.NUM_CIVILITE AS NUM_CIVILITE_CONTACT,
NPAI.IDT_NPAI AS IDT_NPAI,
NPAI.NUM_CONTACT AS NUM_CONTACT,
NPAI.NUM_STATUT AS NUM_STATUT,
ADRESSE_OLD.VCH_COMPLEMENT_DESTINATAIRE AS

VCH_COMPLEMENT_DESTINATAIRE_OLD,
> >ADRESSE_OLD.VCH_COMPLEMENT_GEOGRAPHIQUE AS
VCH_COMPLEMENT_GEOGRAPHIQUE_OLD,
ADRESSE_OLD.VCH_NUM_VOIE AS VCH_NUM_VOIE_OLD,
ADRESSE_OLD.NUM_TYPE_VOIE AS NUM_TYPE_VOIE_OLD,
ADRESSE_OLD.VCH_NOM_RUE AS VCH_NOM_RUE_OLD,
ADRESSE_OLD.VCH_CODE_POSTAL AS VCH_CODE_POSTAL_OLD,
ADRESSE_OLD.VCH_VILLE AS VCH_VILLE_OLD,
ADRESSE_NEW.VCH_COMPLEMENT_DESTINATAIRE AS

VCH_COMPLEMENT_DESTINATAIRE_NEW,
> >ADRESSE_NEW.VCH_COMPLEMENT_GEOGRAPHIQUE AS
VCH_COMPLEMENT_GEOGRAPHIQUE_NEW,
ADRESSE_NEW.VCH_NUM_VOIE AS VCH_NUM_VOIE_NEW,
ADRESSE_NEW.NUM_TYPE_VOIE AS NUM_TYPE_VOIE_NEW,
ADRESSE_NEW.VCH_NOM_RUE AS VCH_NOM_RUE_NEW,
ADRESSE_NEW.VCH_CODE_POSTAL AS VCH_CODE_POSTAL_NEW,
ADRESSE_NEW.VCH_VILLE AS VCH_VILLE_NEW
FROM
TBL_NPAI AS NPAI,
TBL_CONTACT AS CONTACT,
TBL_ADRESSE AS ADRESSE_OLD,
TBL_TYPE_ADRESSE AS TYPE_ADRESSE_OLD,
TBL_ADRESSE AS ADRESSE_NEW,
TBL_TYPE_ADRESSE AS TYPE_ADRESSE_NEW
WHERE
NPAI.NUM_CONTACT = CONTACT.IDT_CONTACT
AND ADRESSE_OLD.NUM_CONTACT = CONTACT.IDT_CONTACT
AND ADRESSE_NEW.NUM_CONTACT = CONTACT.IDT_CONTACT
AND TYPE_ADRESSE_NEW.IDT_TYPE_ADRESSE = ADRESSE_NEW.NUM_TYPE_ADRESSE
AND TYPE_ADRESSE_NEW.VCH_CODE = 'EC'
AND CONTACT.VCH_NUMERO_COMPTE = ''
AND CONTACT.VCH_NOM = ''
AND TYPE_ADRESSE_OLD.IDT_TYPE_ADRESSE = ADRESSE_OLD.NUM_TYPE_ADRESSE
AND TYPE_ADRESSE_OLD.VCH_CODE = 'I'
AND NPAI.IDT_NPAI = 1

d'avance merci

coeurgan





Posté le 19 avril 2004 - 19:38
En fait, Adresse_new et adresse_old pointent vers le même enregistrement d'adresse.
Pour résoudre le pb il faut utiliser les requete imbriquées.

Si tu veux que je t'aide plus concretement envoye moi ton analyse.
Je vais quand même y réfléchir et je te tiens au courant !

Je comprend pas bien pourquoi, si tu veux recuperer les adresses tu as des
conditions sur le type adresse !

Bon courage et à bientôt

"coeurgan" <coeurgan@yahoo.fr> wrote:

Mon contact peut et doit avoir deux adresses, et j'aurais besoin de
récupérer les données de ces deux adresses dans la même requète.

Je vais bientôt pleurer...

coeurgan
"So07" <sonia_vernet@hotmail.com> a écrit dans le message de
news:4083a315$1@news.pcsoft.fr...


Bonjour,

J'ai l'impression que tu cherches pour un contact un vch_code = 'I' (dans
adresse_old) ET un vch_code = 'EC' (dans adresse_new)
or adresse_old et adresse_new sont en faite une même table

Il faudrait peut être utiliser qu'une table adresse et mettre vch_code

=
'I' OU un vch_code = 'EC'

Est-ce q'un contact peut avoir plusieurs adresses ?
Car si oui dans ta requete j'ai l'impression que tu ne prendra que la
premiere

et donc le vch_code ne peut pas être différent d'où le plantage de ta
requete.

et dans ce cas il te faut utiliser une requete imbriquée.

Dis-moi exactement quelle résultat tu veux !


"coeurgan" <coeurgan@yahoo.fr> wrote:

Bonjour,

J'ai une requète SQL qui refuse de s'éxécuter, après de laborieux tests
je

constate que trois conditions (un groupe de 2 et un groupe de 1) semblent
"incompatibles". La requète fonctionne avec l'un ou l'autre groupe mais
pas

avec les deux. De même si on ne laisse que ces trois conditions la
requète

fonctionne.

Bref un certain nombre de combinaisons fonctionnent mais pas celle que

je
voudrais.

Voici la requète telle que je la souhaite (telle que je la rêve?) : Chez
moi

elle ne fonctionne pas, en retirant la dernière condition ça marche,

de
même
en retirant les deux conditions précédentes. Quelqu'un aurait-il une
idée,

une expérience à me faire partager, ou même quelques mots de consolation
ça

me ferait déjà plaisir...



SELECT
CONTACT.VCH_NOM AS VCH_NOM_CONTACT,
CONTACT.VCH_PRENOM AS VCH_PRENOM_CONTACT,
CONTACT.VCH_NUMERO_COMPTE AS VCH_NUMERO_COMPTE_CONTACT,
CONTACT.NUM_CIVILITE AS NUM_CIVILITE_CONTACT,
NPAI.IDT_NPAI AS IDT_NPAI,
NPAI.NUM_CONTACT AS NUM_CONTACT,
NPAI.NUM_STATUT AS NUM_STATUT,
ADRESSE_OLD.VCH_COMPLEMENT_DESTINATAIRE AS
VCH_COMPLEMENT_DESTINATAIRE_OLD,

ADRESSE_OLD.VCH_COMPLEMENT_GEOGRAPHIQUE AS
VCH_COMPLEMENT_GEOGRAPHIQUE_OLD,

ADRESSE_OLD.VCH_NUM_VOIE AS VCH_NUM_VOIE_OLD,
ADRESSE_OLD.NUM_TYPE_VOIE AS NUM_TYPE_VOIE_OLD,
ADRESSE_OLD.VCH_NOM_RUE AS VCH_NOM_RUE_OLD,
ADRESSE_OLD.VCH_CODE_POSTAL AS VCH_CODE_POSTAL_OLD,
ADRESSE_OLD.VCH_VILLE AS VCH_VILLE_OLD,
ADRESSE_NEW.VCH_COMPLEMENT_DESTINATAIRE AS
VCH_COMPLEMENT_DESTINATAIRE_NEW,

ADRESSE_NEW.VCH_COMPLEMENT_GEOGRAPHIQUE AS
VCH_COMPLEMENT_GEOGRAPHIQUE_NEW,

ADRESSE_NEW.VCH_NUM_VOIE AS VCH_NUM_VOIE_NEW,
ADRESSE_NEW.NUM_TYPE_VOIE AS NUM_TYPE_VOIE_NEW,
ADRESSE_NEW.VCH_NOM_RUE AS VCH_NOM_RUE_NEW,
ADRESSE_NEW.VCH_CODE_POSTAL AS VCH_CODE_POSTAL_NEW,
ADRESSE_NEW.VCH_VILLE AS VCH_VILLE_NEW
FROM
TBL_NPAI AS NPAI,
TBL_CONTACT AS CONTACT,
TBL_ADRESSE AS ADRESSE_OLD,
TBL_TYPE_ADRESSE AS TYPE_ADRESSE_OLD,
TBL_ADRESSE AS ADRESSE_NEW,
TBL_TYPE_ADRESSE AS TYPE_ADRESSE_NEW
WHERE
NPAI.NUM_CONTACT = CONTACT.IDT_CONTACT
AND ADRESSE_OLD.NUM_CONTACT = CONTACT.IDT_CONTACT
AND ADRESSE_NEW.NUM_CONTACT = CONTACT.IDT_CONTACT
AND TYPE_ADRESSE_NEW.IDT_TYPE_ADRESSE = ADRESSE_NEW.NUM_TYPE_ADRESSE
AND TYPE_ADRESSE_NEW.VCH_CODE = 'EC'
AND CONTACT.VCH_NUMERO_COMPTE = ''
AND CONTACT.VCH_NOM = ''
AND TYPE_ADRESSE_OLD.IDT_TYPE_ADRESSE = ADRESSE_OLD.NUM_TYPE_ADRESSE
AND TYPE_ADRESSE_OLD.VCH_CODE = 'I'
AND NPAI.IDT_NPAI = 1

d'avance merci

coeurgan







Posté le 20 avril 2004 - 19:06
Merci beaucoup Sonia, mais le problème ne vient pas de là, puisque cette
requète fonctionne si on enlève la dernière ligne. Le fait de renommer la
table adresse avec deux noms différents permet d'accéder à deux "copies"
différentes, comme si on avait deux tables TBL_ADRESSE identiques. Cela
permet sur la même ligne d'obtenir la nouvelle adresse et l'ancienne adresse
d'un contact.

En fait j'ai contourné le problème en filtrant le résultat de la requète. Le
problème vient à mon avis du nombre de conditions, ou de leur imbrication.
Si je trouve la solution je posterais ici.

coeurgan

"So07" <sonia_vernet@hotmail.com> a écrit dans le message de
news:4083f545$1@news.pcsoft.fr...


En fait, Adresse_new et adresse_old pointent vers le même enregistrement

d'adresse.
Pour résoudre le pb il faut utiliser les requete imbriquées.

Si tu veux que je t'aide plus concretement envoye moi ton analyse.
Je vais quand même y réfléchir et je te tiens au courant !

Je comprend pas bien pourquoi, si tu veux recuperer les adresses tu as des
conditions sur le type adresse !

Bon courage et à bientôt

"coeurgan" <coeurgan@yahoo.fr> wrote:

Mon contact peut et doit avoir deux adresses, et j'aurais besoin de
récupérer les données de ces deux adresses dans la même requète.

Je vais bientôt pleurer...

coeurgan
"So07" <sonia_vernet@hotmail.com> a écrit dans le message de
news:4083a315$1@news.pcsoft.fr...


Bonjour,

J'ai l'impression que tu cherches pour un contact un vch_code = 'I'

(dans
adresse_old) ET un vch_code = 'EC' (dans adresse_new)
or adresse_old et adresse_new sont en faite une même table

Il faudrait peut être utiliser qu'une table adresse et mettre vch_code
=

'I' OU un vch_code = 'EC'

Est-ce q'un contact peut avoir plusieurs adresses ?
Car si oui dans ta requete j'ai l'impression que tu ne prendra que la
premiere

et donc le vch_code ne peut pas être différent d'où le plantage de ta
requete.

et dans ce cas il te faut utiliser une requete imbriquée.

Dis-moi exactement quelle résultat tu veux !


"coeurgan" <coeurgan@yahoo.fr> wrote:

Bonjour,

J'ai une requète SQL qui refuse de s'éxécuter, après de laborieux

tests
je
constate que trois conditions (un groupe de 2 et un groupe de 1)

semblent
> >> >"incompatibles". La requète fonctionne avec l'un ou l'autre groupe
mais
pas
avec les deux. De même si on ne laisse que ces trois conditions la
requète

fonctionne.

Bref un certain nombre de combinaisons fonctionnent mais pas celle que
je

voudrais.

Voici la requète telle que je la souhaite (telle que je la rêve?) :

Chez
moi
elle ne fonctionne pas, en retirant la dernière condition ça marche,
de

même
en retirant les deux conditions précédentes. Quelqu'un aurait-il une
idée,

une expérience à me faire partager, ou même quelques mots de

consolation
ça
me ferait déjà plaisir...



SELECT
CONTACT.VCH_NOM AS VCH_NOM_CONTACT,
CONTACT.VCH_PRENOM AS VCH_PRENOM_CONTACT,
CONTACT.VCH_NUMERO_COMPTE AS VCH_NUMERO_COMPTE_CONTACT,
CONTACT.NUM_CIVILITE AS NUM_CIVILITE_CONTACT,
NPAI.IDT_NPAI AS IDT_NPAI,
NPAI.NUM_CONTACT AS NUM_CONTACT,
NPAI.NUM_STATUT AS NUM_STATUT,
ADRESSE_OLD.VCH_COMPLEMENT_DESTINATAIRE AS
VCH_COMPLEMENT_DESTINATAIRE_OLD,

ADRESSE_OLD.VCH_COMPLEMENT_GEOGRAPHIQUE AS
VCH_COMPLEMENT_GEOGRAPHIQUE_OLD,

ADRESSE_OLD.VCH_NUM_VOIE AS VCH_NUM_VOIE_OLD,
ADRESSE_OLD.NUM_TYPE_VOIE AS NUM_TYPE_VOIE_OLD,
ADRESSE_OLD.VCH_NOM_RUE AS VCH_NOM_RUE_OLD,
ADRESSE_OLD.VCH_CODE_POSTAL AS VCH_CODE_POSTAL_OLD,
ADRESSE_OLD.VCH_VILLE AS VCH_VILLE_OLD,
ADRESSE_NEW.VCH_COMPLEMENT_DESTINATAIRE AS
VCH_COMPLEMENT_DESTINATAIRE_NEW,

ADRESSE_NEW.VCH_COMPLEMENT_GEOGRAPHIQUE AS
VCH_COMPLEMENT_GEOGRAPHIQUE_NEW,

ADRESSE_NEW.VCH_NUM_VOIE AS VCH_NUM_VOIE_NEW,
ADRESSE_NEW.NUM_TYPE_VOIE AS NUM_TYPE_VOIE_NEW,
ADRESSE_NEW.VCH_NOM_RUE AS VCH_NOM_RUE_NEW,
ADRESSE_NEW.VCH_CODE_POSTAL AS VCH_CODE_POSTAL_NEW,
ADRESSE_NEW.VCH_VILLE AS VCH_VILLE_NEW
FROM
TBL_NPAI AS NPAI,
TBL_CONTACT AS CONTACT,
TBL_ADRESSE AS ADRESSE_OLD,
TBL_TYPE_ADRESSE AS TYPE_ADRESSE_OLD,
TBL_ADRESSE AS ADRESSE_NEW,
TBL_TYPE_ADRESSE AS TYPE_ADRESSE_NEW
WHERE
NPAI.NUM_CONTACT = CONTACT.IDT_CONTACT
AND ADRESSE_OLD.NUM_CONTACT = CONTACT.IDT_CONTACT
AND ADRESSE_NEW.NUM_CONTACT = CONTACT.IDT_CONTACT
AND TYPE_ADRESSE_NEW.IDT_TYPE_ADRESSE = ADRESSE_NEW.NUM_TYPE_ADRESSE
AND TYPE_ADRESSE_NEW.VCH_CODE = 'EC'
AND CONTACT.VCH_NUMERO_COMPTE = ''
AND CONTACT.VCH_NOM = ''
AND TYPE_ADRESSE_OLD.IDT_TYPE_ADRESSE = ADRESSE_OLD.NUM_TYPE_ADRESSE
AND TYPE_ADRESSE_OLD.VCH_CODE = 'I'
AND NPAI.IDT_NPAI = 1

d'avance merci

coeurgan