WB12 : Requete multifichier => Problème !
Stagiaire WDF
Inscrit:
11/01/2008 11:25
Post(s): 18
Bonjour à tous,

Je travaille en Webdev 12 avec une base hyperfile

Partie de la base concernée :
J'ai une table document reliée à un table collection, un document peut avoir 0 ou 1 collection et une collection peut avoir 0 ou n document.

Mon problème est le suivant :
Si je fais une requête (editeur ou SQL) demandant d'afficher tous les documents dont le titre contient la variable cTitre OU la collection contient la var. cCollection, le résultat contient uniquement les documents qui ont une collection renseignée, il ne me donne pas les documents qui ont uniquement le titre correspondant mais sans collection.

Note :
J'ai bien trouvé dans la description des jointures, quelque chose me permettant d'afficher un document qui n'a pas de collection mais si je coche cette option, je me retrouve, lors de l'exec. de ma requète, avec tous les documents de la base (sans exception) !

Question ?
Est ce un problème ou un manque dans Webdev ou ai-je oublié quelque chose ?

Solution batarde :
J'ai bien une solution mais qui ne me convient pas du tout, à savoir, que si je créé une collection avec pour libellé un espace (rien) et que j'attribue le numéro de collection correspondant à tous les documents qui n'ont pas de collection cela fonctionne mais ce n'est pas très pro et surtout difficilement gérable.

Merci pour votre aide .

Contribution le : 05/08/2008 16:25
Créer un fichier PDF de la contribution Imprimer


Re: WB12 : Requete multifichier => Problème !
Stagiaire WDF
Inscrit:
25/08/2006 13:13
Post(s): 27
Salut !

Copie ici le code SQL de ta requete, ca sera plus simple pour la corriger ! :)

Contribution le : 07/08/2008 08:55
Créer un fichier PDF de la contribution Imprimer


Re: WB12 : Requete multifichier => Problème !
Stagiaire WDF
Inscrit:
11/01/2008 11:25
Post(s): 18
Merci de votre participation, voici les deux requetes que j'ai tenté et qui ne répondent pas à ma demande :

1) Celle ci renvoi uniquement les enregistrements (doc) qui ont une collection :

SELECT
Doc.Nodoc AS Nodoc,
Doc.titre AS titre,
Doc.sstitre AS sstitre,
Collec.Collection AS Collection
FROM
Collec,
Doc
WHERE
Doc.nocolle = Collec.IDCollec
AND
(
Collec.Collection LIKE %{cColl}%
OR Doc.titre LIKE %{cTitre}%
)



2) Cette autre renvoi tous les enregistrements ... :

SELECT
Doc.Nodoc AS Nodoc,
Doc.titre AS titre,
Doc.sstitre AS sstitre,
Collec.Collection AS Collection
FROM
Collec RIGHT OUTER JOIN Doc ON Doc.nocolle = Collec.IDCollec
WHERE
(
Collec.Collection LIKE %{cColl}%
OR Doc.titre LIKE %{cTitre}%
)


Merci de m'apporter une réponse sachant que je voudrais ,dans cet exemple, tous les docs dont le "titre" contient "cTitre" OU la "collection"contient "cColl" y comprix les enr. qui n'ont pas de collection, le titre étant obligatoire !

Ci joint le schéma de ma requ^te en Webdev 12

Attacher un fichier:



jpg  REQ_Doc.JPG (29.58 KB)
3087_489aa0a670468.jpg 533X547 px

Contribution le : 07/08/2008 09:12
Créer un fichier PDF de la contribution Imprimer


Re: WB12 : Requete multifichier => Problème !
Stagiaire WDF
Inscrit:
18/07/2008 08:53
Post(s): 14
Moi je dirai la proposition 1) avec une petite modif :
SELECT
Doc.Nodoc AS Nodoc,
Doc.titre AS titre,
Doc.sstitre AS sstitre,
Collec.Collection AS Collection
FROM
Collec,
Doc
WHERE
Doc.nocolle = Collec.IDCollec
AND

Collec.Collection LIKE %{cColl}%
AND Doc.titre LIKE %{cTitre}%

Pour la solution 2) :
SELECT
Doc.Nodoc AS Nodoc,
Doc.titre AS titre,
Doc.sstitre AS sstitre,
Collec.Collection AS Collection
FROM
Collec INNER JOIN Doc ON Doc.nocolle = Collec.IDCollec
WHERE
Collec.Collection LIKE %{cColl}%
AND Doc.titre LIKE %{cTitre}%

Contribution le : 07/08/2008 11:07
Créer un fichier PDF de la contribution Imprimer


Re: WB12 : Requete multifichier => Problème !
Stagiaire WDF
Inscrit:
11/01/2008 11:25
Post(s): 18
re ...

Merci pour votre participation mais vous ne répondez pas à mon besoin premier à savoir : "tous les docs dont le 'titre' contient 'cTitre' OU la 'collection' contient 'cColl' y comprix les enr. qui n'ont pas de collection"

Dans ce que vous me mettez j'aurais tous les docs dont le titre est 'cTitre' ET la collection 'cColl'
et non l'un OU l'autre comme j'ai besoin ...

Une autre soluc SVP ?

Contribution le : 07/08/2008 16:05
Créer un fichier PDF de la contribution Imprimer


Re: WB12 : Requete multifichier => Problème !
Stagiaire WDF
Inscrit:
18/07/2008 08:53
Post(s): 14
Un truc comme ça alors :
SELECT
Doc.Nodoc AS Nodoc,
Doc.titre AS titre,
Doc.sstitre AS sstitre,
Collec.Collection AS Collection
FROM
Collec INNER JOIN Doc ON Doc.nocolle = Collec.IDCollec
WHERE
((Collec.Collection LIKE %{cColl}% AND Collec.Collection<>'')
OR (Doc.titre LIKE %{cTitre}% AND Doc.titre<>''))
OR
(Doc.titre LIKE %{cTitre}% AND Doc.titre <> '' AND Collec.Collection = '')

A condition d'avoir dans ta table Collec une ligne avec Collection=''

Contribution le : 07/08/2008 16:32

Edité par fucce sur 7/8/2008 17:00:13
Créer un fichier PDF de la contribution Imprimer


Re: WB12 : Requete multifichier => Problème !
Stagiaire WDF
Inscrit:
11/01/2008 11:25
Post(s): 18
D'après les premiers tests se seraient dans ce style là :

SELECT
Doc.Nodoc AS Nodoc,
Doc.titre AS titre,
Doc.sstitre AS sstitre,
Collec.Collection AS Collection
FROM
Collec RIGHT OUTER JOIN Doc ON Doc.nocolle = Collec.IDCollec
WHERE
Collec.Collection LIKE %{cColl}% AND Collec.IDColl<>0
OR Doc.titre LIKE %{cTitre}%

Cependant j'ai un autre problème quand je vais encore plus loin avec un double relation (cf. analyse).

Là ça se gate et je tourne en rond ...

Attacher un fichier:



jpg  rel_complex.JPG (38.38 KB)
3087_489b0d230316d.jpg 611X455 px

Contribution le : 07/08/2008 16:56
Créer un fichier PDF de la contribution Imprimer


Re: WB12 : Requete multifichier => Problème !
Stagiaire WDF
Inscrit:
18/07/2008 08:53
Post(s): 14
J'ai modifié mon POST car je pense qu'il n'affichait pas les oeuvres sans collection.
Dans ta requête, tu me confirme donc que tu à un enregistrement vide dans ta table collection!?!

Contribution le : 07/08/2008 17:06
Créer un fichier PDF de la contribution Imprimer


Re: WB12 : Requete multifichier => Problème !
Stagiaire WDF
Inscrit:
11/01/2008 11:25
Post(s): 18
Et bien non, je voudrais éviter justement de créer (volontairement) un enregistrement vide afon de créer une liaison obsolète !

Pour résumer je veux bien les documents, qu'ils aient ou pas une collection.

Pour cette partie? ce que vous m'avez donné fonctionne, ça se gate lorsqu'une relation complexe rentre en jeux (2nd problème), dans ce cas, j'ai l'impression qu'il perd le nord, je fais de nouveaux tests et refait appel si je bloque.

En tout cas merci et bon dev.

Contribution le : 08/08/2008 08:21
Créer un fichier PDF de la contribution Imprimer


Re: WB12 : Requete multifichier => Problème !
Stagiaire WDF
Inscrit:
11/01/2008 11:25
Post(s): 18
Là où les choses se gattent c'est lorsque je demande à afficher différentes informations sur les documents contenant :
un titre = var. cTitre
OU
une collection = var. cColl
OU
un mot matière (=mot clé) = var. cMotClé
OU
un auteur = var. cNomAuteur

La difficulté principale réside dans le fait qu'un unique document peut avoir plusieurs auteurs ainsi que plusieurs mots clés (ou aucun...) : cf analyse

Le but de cette requête est de pouvoir rechercher tous les docs qui contiennent au moins l'un des variables demandées.

Si quelqu'un à un soluc car dans les INNER JOIN, LEFT OUTER ... je m'y mélange les pinceaux !

Sur un autre post on m'a parlé de la fonction coalesce() mais étant une nouvelle fonction de webdev 12 je crois l'aide en ligne n'est que très peu étofféé.

Merci ...

Attacher un fichier:



jpg  ana_doc.JPG (94.42 KB)
3087_489bebf33f32f.jpg 710X801 px

Contribution le : 08/08/2008 08:47
Créer un fichier PDF de la contribution Imprimer


Re: WB12 : Requete multifichier => Problème !
Stagiaire WDF
Inscrit:
25/08/2006 13:13
Post(s): 27
Déjà, pour ta premiere partie sans devoir créer de collection bidon :

sREq est une chaîne = [
SELECT DOC.NoDOC,DOC.TITRE,DOC.NoColle,COLLEC.COLLECTION
FROM DOC Left OUTER JOIN COLLEC on DOC.NoColle=COLLEC.IDCOLLECTION
WHERE DOC.TITRE LIKE '%1%'
OR (DOC.NoColle<>0 AND COLLEC.COLLECTION LIKE '%2%')
]

sREq=ChaîneConstruit(sREq,"%"+sNomDoc,"%"+sNomColl)

Contribution le : 11/08/2008 14:15
Créer un fichier PDF de la contribution Imprimer


Re: WB12 : Requete multifichier => Problème !
Stagiaire WDF
Inscrit:
25/08/2006 13:13
Post(s): 27
Après quelques tests effectivement les conditions de selection sont pas evidentes sur des jointures externes.
- Peut-etre tester si les rubriques supportent le null avec des conditions du style "Where (collec.idcollection not is null AND collec.collection like '%coucou%') "
En tous cas ca ne fonctionne pas sur du HF sans Null.
- Sinon utiliser des sous-requetes :
Exple renvoyant tous les docs qui ont "UnDoc" dans leur titre ou "UneCollection" dans le nom de collection (ou pas de collection) ou "UnAuteur" dans le nom d'auteur (ou pas d'auteur)


SELECT
*
FROM
DOC
WHERE
(
DOC.NoDOC LIKE '%UnDoc%'
OR
(
NoColle IN(SELECT COLLEC.IDCOLLECTION
FROM COLLEC
WHERE COLLEC.COLLECTION LIKE '%UneCollection%'
)
)
OR
(
DOC.NoDOC IN (SELECT DISTINCT DOCUMENT_AUTEUR.NoDOC
FROM DOCUMENT_AUTEUR,AUTEUR
WHERE AUTEUR.ID_AUTEUR= DOCUMENT_AUTEUR.ID_AUTEUR
AND AUTEUR.NOM_AUT LIKE '%UnAuteur%'
)
)
)

Contribution le : 11/08/2008 16:49
Créer un fichier PDF de la contribution Imprimer


Re: WB12 : Requete multifichier => Problème !
Stagiaire WDF
Inscrit:
11/01/2008 11:25
Post(s): 18
Je ne vous réponds que maintenant car j'ai testé ce que vous m'avez donné avant de vous répondre... et je dois tout bonnement vous remercier pour votre aide qui à solutionné mon problème, j'ai donc utilisé des sous requêtes pour arriver à mes fins.

Bonne continuation.

David

Contribution le : 12/08/2008 15:04
Créer un fichier PDF de la contribution Imprimer


Re: WB12 : Requete multifichier => Problème !
Stagiaire WDF
Inscrit:
11/01/2008 11:25
Post(s): 18
Pour le plaisir des yeux je vous montre le code SQL de ma requête "fonctionnelle".

Celui ci me permet d'affiche le résultat demandé selon 4 critères, le tout provenant de 9 fichiers liés dans mon analyse.

J'ai fait des tests sur une base de 1000 enregistrements env. cela m'a l'air concluant et relativement rapide, reste à tester sur 10 ou 20 000 enr.

Attacher un fichier:



jpg  SQL_Sympa.JPG (85.51 KB)
3087_48a19b337ed58.jpg 798X330 px

Contribution le : 12/08/2008 16:16
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2