Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


Bonjour Yves,


Le 15/03/11 21:43, yves dutrieux a écrit :
A mon avis on doit pouvoir se débrouiller avec la table S seule..
Créer 2 vues/tables équivalentes à  :
T1 = select ad, n as "ne"  from S where S="f"

Il faut mettre :

select ad, n as "ne" from S where S.s='f'

sinon le parseur de Base se plante parce qu'il transforme le champ 's'
minuscule en 'S' majuscule, d'où confusion avec le nom de la table et
génération d'erreur.

T2 = select ad, n as "nm" from S where S="m"

idem ici, en remplaçant "m" par 'm'

ensuite un select comme suit :
select ad.T1, ne, nm from T1, T2 where ad.T1=ad.T2
union
select ad.T1, ne, nm from T1, T2 where ad.T1 not in (select ad from T2)
union
select ad.T2, ne, nm from T1, T2 where ad.T2 not in (select ad from T1)



Cela donne le message d'erreur suivante :

La commande n'est pas une instruction SELECT.
Seules les requêtes sont autorisées.

SELECT "ad"."T1", "ne", "nm" FROM "T1", "T2" WHERE "ad"."T1" = "ad"."T2"
UNION SELECT "ad"."T1", "ne", "nm" FROM "T1", "T2" WHERE "ad"."T1" NOT
IN ( SELECT "ad" FROM "T2" )
UNION SELECT "ad"."T2", "ne", "nm" FROM "T1", "T2" WHERE "ad"."T2" NOT
IN ( SELECT "ad" FROM "T1" )

Si je désactive le parseur en passant directement par l'exécution de la
requête SQL, j'ai droit à ça :

Column not found: AD.T1 in statement [select ad.T1, ne, nm from T1, T2
where ad.T1=ad.T2
union select ad.T1, ne, nm from T1, T2 where ad.T1 not in (select ad
from T2)
union select ad.T2, ne, nm from T1, T2 where ad.T2 not in (select ad
from T1)]

C'est un bug déjà répertorié d'OOo de transformer les noms en majuscules
- alors, morale de l'histoire : n'utiliser que des majuscules partout
pour éviter ce genre de plaisanterie ?

Si je corrige ta requête en mettant ceci à la place :

select "T1"."ad", "ne", "nm" from T1, T2 where "T1"."ad"="T2"."ad"
union select "T1"."ad", "ne", "nm" from T1, T2 where "T1"."ad" not in
(select "ad" from T2)
union select "T2"."ad", "ne", "nm" from T1, T2 where "T2"."ad" not in
(select "ad" from T1)

Il faut en effet, mettre le nom de la Vue avant la colonne, sinon la
requête ne fonctionne pas.

J'obtiens :

ad ne nm
a d e
b f e
b f g
c d g
c f g

Qui dit mieux ? :-ppp

Alex







-- 
Envoyez un mail à users+help@fr.libreoffice.org pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être 
supprimés

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.