|
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
|
| |
| |
| | | |
|
| | | | |
| | |
|