3 pièce(s) jointe(s)
Résultat de requête incohérent - sujet conseillé aux membres nés avant 1965
Bonjour,
Je suis en train de migrer, laborieusement il est vrai (car je découvre le SQL et SQLite), une application de Paradox/BDE vers SQLite/Firedac .
OS : Windows 8/10, RadStudio Professional 10.3.3/10.4.3 (pc domicile/pc cabinet de soins). Version SQLite (pour le moment) 32 bits. Cela fait plusieurs jours que je rencontre un sérieux écueil...
NOTA : Les descripteurs de fichier sont les mêmes sous Paradox et SQLite (Pas de BLOB ni de Text).
Avec SQLite :
Toutes les tables ont une FOREIGN_KEY vers "Produits" avec comme champ clé NumM.
Toutes les tables ont une PRIMARY_KEY INTEGER non auto-incrémentée.
Toutes les tables sont en plus indexées sur un identifiant unique.
Dans le programme original, avec Paradox/BDE j'effectue cette requête :
(NumM et Indic/Affection étant des champs communs aux différentes tables)
Code:
1 2 3 4
| SELECT DISTINCT D.Affection, D1.Organe, D1.Indic, D1.CT, D1.VVT, D1.Rem, D1.Eff, D1.Compl, D2.Nom, D2.HE
FROM "Affections" D, "HEIndic" D1, "Produits" D2
WHERE (D1.Indic = D.Affection) AND (D2.NumM = D1.NumM) AND (D2.HE = True)
ORDER BY D.Affection, D2.Nom |
et j'obtiens :
Pièce jointe 580650
avec la même requête avec SQLite/FireDac, soit :
Pièce jointe 580651
j'obtiens une table avec des colonnes vides... quant à SQLite Studio, il me jette proprement et simplement avec comme message d'erreur :
Pièce jointe 580652
Depuis, j'ai modifié le champ "Affections" en "Affection" (Merci SergioMaster) pour faciliter la lecture et gagner en cohérence, même résultat...
J'ai eu beau tester la même requête avec SQLite Studio, dBBrowser pour SQLite ou l'éditeur SQL de RadStudio, rien n'y fait, j'obtiens toujours le même résultat... c'est à dire des colonnes vides si ce n'est le descripteur des colonnes...
Si quelqu'un a une idée, merci. Je suis preneur de toute observation.
bien cordialement,
SQLite Requête avec réponse incohérente
Merci SergioMaster pour les infos et la piste à explorer. Je vais potasser les explications de Frédéric Brouard sur les jointures.
En ce qui concerne les tables avec les identifiants non auto-incrémentés, comme indiqué dans la documentation SQLIte en ligne, je pensais récupérer le dernier ROWID de la table et l'incrémenter par programme ou laisser faire SQLite... enfin si j'ai bien compris les possibilités de SQLite.
En fait, ce que je cherche à faire c'est pour une affection donnée (AFFECTION), lister toutes les huiles essentielles (HE) qui traitent ce problème, tout en mentionnant les remarques (REM), les compléments (COMPL), l'organe producteur (ORGANE), l'efficacité (EFF) et la valeur thérapeutique (VT) en provenance des tables AFFECTIONS, HEINDIC et PRODUITS. Sachant que le numéro de produits NUMM est repris dans la table HEINDIC et que dans HEINDIC j'ai un champ référence qui pointe sur AFFECTIONS.AFFECTION
Je vais m'intéresser à COALESCE également. Merci du tuyau.
SQLite Requête avec réponse incohérente
Bonjour,
Merci pour les observations, cela permet toujours de progresser.
Dans le désordre...
Coalesce existe bien en SQLite, je m'y intéresse donc même si ce n'est pas ma priorité.
En ce qui concerne la requête, j'ai pensé à simplifier le problème en faisant une relation Maître/Détail entre AFFECTIONS et le fichier SQL obtenu par la clause JOIN. Ne me reste plus qu'à finaliser cette requête avec 2 tables au lieu de 3, ce qui semble plus simple, pourtant...
Si j'ai bien compris, INNER JOIN permet l'accès aux données (lignes et colonnes) de la table jointe, or pour la requête suivante avec SQLite Studio :
Code:
1 2 3 4 5
| SELECT D.INDIC, D.REM, D.ORGANE, D.EFF, D.VVT, D.COMPL
FROM HEINDIC D
INNER JOIN PRODUITS C ON D.NUMM = C.NUMM
WHERE C.HE = true
ORDER BY D.INDIC, D.REM, C.NOM, D.ORGANE, D.COMPL |
Pas de message d'erreur mais j'obtiens une table vide si ce ne sont les entêtes de colonnes où le champ NOM n'apparaît pas... J'ai la même chose avec dbBrowser pour SQLite. J'ai le même résultat en enlevant la clause WHERE.
Pourtant NUMM est bien commun aux deux tables. C'est un numéro unique dans la table PRODUITS et toutes les autres tables (qui peuvent avoir plusieurs lignes avec ce numéro) pointent vers ce numéro par le champ commun NUMM. Et les enregistrements des tables présents...
table HEINDIC
Pièce jointe 580795
table PRODUITS
Pièce jointe 580796
Cordialement,
SQLite Requête avec réponse incohérente
Bonsoir SergioMaster,
Ici, à Nouméa, il est 18h20 (09 heures de décalage horaire avec la métropole), je sors de massage et prends connaissance à l'instant de ta réponse (j'embraye sur ton genou, non pardon je/nous). Merci de t intéresser à ce problème qui pour moi est épineux car il m'empêche d'achever cette migration tant espérée. En fonction de mon emploi du temps de demain, je te fais parvenir les tables (un extrait me paraît difficile car je ne suis pas certain des correspondances) demain, descriptif des tables + données. Ceci étant, même si je suis impatient, l'urgence n'est pas avérée mon vieux logiciel tourne encore sous Paradox/BDE débuté en 1998 avec un successeur de TurboPascal.
De mon côté, j'ai testé, sans plus de succès, à partir de VIEW, ayant lu qu'une VIEW était un succédané de SELECT...
Durant le massage, bien que concentré, j'ai imaginé que cela pouvait provenir d'une mauvaise installation de SQLite, voire d'un virus... j'avoue être foncièrement dépité et ne plus savoir qu'en penser...
un grand merci pour ton aide car malgré un BTS informatique, il y a quelques années (par pudeur, je ne préciserais pas...), les choses ont bien changé depuis.
Cdlt,
SQLite Requête avec réponse incohérente
Mort de rire... je fête 62 printemps et autant d'hivers, sans compter les jours heureux, dans 15 jours...
4 pièce(s) jointe(s)
SQLite Requête avec réponse incohérente
Bonjour,
Ravi de faire partie du club...
Entre deux massages, j'ai eu le temps de faire un extrait de ma BDD mais l'interface pour joindre le fichier ne la charge pas ou tourne dans le vide ("parcourir" n'ouvre aucune fenêtre...). J'ai l'impression d'être poursuivi par la haine et entubé par le destin ! Enfin, je joins les descripteurs, enfin j'essaie...
Vous allez rire, mais il paraît que les problèmes d'internet en Calédonie proviennent du câble sous-marin qui est mordu régulièrement par les requins... je le vends pour le prix que je l'ai acheté...
Pièce jointe 580884
Pièce jointe 580885
Pièce jointe 580886
Pièce jointe 580887
Revenons à nos moutons... Toutes les tables sont liées par NUMM à la table Produits. Il y a des index secondaires uniques ou composés pour chaque table.
Bonne soirée à tous, nous venons d'ouvrir un Château Carbonnieux blanc pour poser la journée. A la santé des Anciens !