vaginator120
Messages postés22Date d'inscriptionmardi 20 avril 2004StatutMembreDernière intervention12 mars 2007
-
24 oct. 2005 à 10:43
vaughan
Messages postés198Date d'inscriptionmardi 6 août 2002StatutMembreDernière intervention29 octobre 2008
-
27 oct. 2005 à 09:43
Bonjour, j'ai un ptit probleme en SQL avec un dataset.
Je voudrais avoir le resultat de ma requete sous la forme suivante:
Libelle donnees1 donnees2
où le champ libelle serait complet (sans sélection sur le resultat) et
les champs donnees1 et donnees2 serait bien affectés par les conditions
de la requete.
Donc au final je voudrais des champs vides où il n'y a pas de resultat pour donnees1 et donnees2.
La difficulté étant que si il n'y a pas de resultat c'est qu'il n'y a
pas de ligne correspondante.Ce n'est donc pas un champs null que je
dois afficher.
exemple:
libelle donnees1 donnees2
--------- ------------- --------------
nom Dupont
prenom
pierre
age
18
25
adresse 15 av delphi
ville
loin
très loin
cp
53000
Peut être il y a t'il un moyen avec un ClientDataSet mais je ne sais pas trop m'en servir .
vaughan
Messages postés198Date d'inscriptionmardi 6 août 2002StatutMembreDernière intervention29 octobre 2008 24 oct. 2005 à 13:15
En faite c'est un problème de requête, il faut faire des jointures externes afin de ramener les lignes même si il n'éxiste pas d'enregistrement.
La jointure entre ta table libellé et donnée c'est page/Nom_zone
SELECT
l.libelle,
d1.donnees,
d2.donnees
FROM
libelle l,
donnees d1,
donnees d2
WHERE
l.Nom_Zone<>''
AND d2.nom_zone like '%02'
AND d1.nom_zone like '%01'
AND RIGHT JOIN l.Nom_Zone = d1.Nom_Zone
AND RIGHT JOIN l.Nom_Zone = d2.Nom_Zone
AND RIGHT JOIN l.Page= d1.Page
AND RIGHT JOIN l.Page = d2.Page
vaginator120
Messages postés22Date d'inscriptionmardi 20 avril 2004StatutMembreDernière intervention12 mars 20071 24 oct. 2005 à 11:32
ok, c'etait un exemple donc je te donne les vraies tables:
donnees1(d1) et donnees2(d2) sortent de la même table.
donnees:
-------------
Page
Nom_Zone
Type_Zone
Donnees
libelle
-------------
Page
Nom_zone
Libelle
Pour l'instant ma requete c'est :
SELECT l2.libelle l2, d1.donnees d1,d2.donnees d2
FROM libelle l1,donnees d1, donnees d2, libelle l2
WHERE l1.Nom_Zone<>''
AND l2.Nom_Zone<>''
AND l2.Libelle=l1.Libelle
AND ((d2.Nom_Zone like concat(l1.Nom_Zone,'%') AND d2.nom_zone like '%02')
AND (d1.Nom_Zone like concat(l2.Nom_Zone,'%') AND d1.nom_zone like '%01'))
c'est un peu bricolage (ça a commencé à m'énerver au bout de 3 jours
sans résultat.. ) mais ça m'affiche ce que je veux mis à part le fait
que ça enleve les libelles qui n'ont pas de correspondance dans la
table donnees.
vaughan
Messages postés198Date d'inscriptionmardi 6 août 2002StatutMembreDernière intervention29 octobre 2008 27 oct. 2005 à 09:43
<DT>IFNULL(expr1,expr2)
<DD>Si l'argument <TT>expr1</TT> n'est pas <TT>NULL</TT> , la fonction <TT>IFNULL()</TT> retournera l'argument <TT>expr1</TT> , sinon elle retournera l'argument <TT>expr2</TT> . La fonction <TT>IFNULL()</TT> retourne une valeur numérique ou une chaîne de caractères, suivant le contexte d'utilisation :