IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

[windev12]jointure et valeur null


Sujet :

WinDev

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Points : 260
    Points
    260
    Par défaut [windev12]jointure et valeur null
    bonjour,

    j'ai une requete regroupant des information de ma table BIEN, CONTACT et CATEGORIE.
    lors de la jointure j'ai coché :
    "Inclure une ligne pour un bien qui n'a pas de categorie"
    "inclure une ligne pour un bien qui n'a pas de contact"

    voici la requete generée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    SELECT 
    	Bien.IDBien AS IDBien,	
    	Bien.CodeDispo AS CodeDispo,	
    	Bien.IDSsCatbien AS IDSsCatbien,	
    	Bien.am_SurfaceHabitable AS am_SurfaceHabitable,	
    	Bien.a_SurfaceCarrez AS a_SurfaceCarrez,	
    	Bien.ambf_NbrePiece AS ambf_NbrePiece,	
    	Bien.am_NbreChambre AS am_NbreChambre,	
    	Bien.Adresse AS Adresse,	
    	Bien.CodePostal AS CodePostal,	
    	Bien.Ville AS Ville,	
    	Bien.PrixComCompris AS PrixComCompris,	
    	Bien.abi_NbreParkingCouvert AS abi_NbreParkingCouvert,	
    	Bien.ab_Etage AS ab_Etage,	
    	Bien.abi_NbreEtage AS abi_NbreEtage,	
    	Bien.abi_Ascenceur AS abi_Ascenceur,	
    	Bien.a_Balcon AS a_Balcon,	
    	Bien.am_Terrasse AS am_Terrasse,	
    	Bien.a_Jardin AS a_Jardin,	
    	Bien.IDAgence AS IDAgence,	
    	Bien.date_modification AS date_modification,	
    	Copro.MetroRer AS MetroRer,	
    	Copro.metro2 AS metro2,	
    	Bien.Modifie AS Modifie,	
    	Bien.BienEnAgence AS BienEnAgence,	
    	Bien.IDim AS IDim,	
    	SsCatbien.Description AS Description,	
    	SsCatbien.IDSsCatbien AS IDSsCatbien_Ss,	
    	Bien.adresseCopro AS adresseCopro,	
    	Bien.UnPourCent AS UnPourCent,	
    	Bien.estDoublonDe AS estDoublonDe,	
    	Bien.MiseAjour AS MiseAjour,	
    	Copro.CodePostal AS CodePostal_Co
    FROM 
    	SsCatbien RIGHT OUTER JOIN Bien ON SsCatbien.IDSsCatbien = Bien.IDSsCatbien,	
    	Copro RIGHT OUTER JOIN Bien ON Copro.IDCopro = Bien.IDCopro
    WHERE 
    	(
    	Bien.IDBien = {p_IDBien}
    	OR	Bien.IDim = {p_IDBien}
    	OR	
    	(
     
    		(
    			Bien.PrixComCompris BETWEEN {p_PrixComCompris1} AND {p_PrixComCompris2}
    			OR	Bien.PrixComCompris IS NULL 
    		)
    		AND	Bien.CodePostal IN ({p_listeCodePostal}) 
    		AND	Bien.adresseCopro LIKE %{p_Adresse}%
    		AND	Bien.MiseAjour BETWEEN {P_dateMin} AND {p_dateMax}
    		AND	Bien.CodeDispo IN ({p_CodeDispo}) 
    		AND	
    		(
    			Bien.am_SurfaceHabitable BETWEEN {p_SurfaceHabitable1} AND {p_SurfaceHabitable2}
    			OR	Bien.am_SurfaceHabitable IS NULL 
    		)
    		AND	Bien.ambf_NbrePiece >= {p_NbrePiece1}
    		AND	Bien.am_NbreChambre >= {p_NbreChambre1}
    		AND	
    		(
    			Bien.ab_Etage BETWEEN {p_etageMin} AND {p_etageMax}
    			OR	Bien.ab_Etage IS NULL 
    		)
    		AND	Bien.abi_NbreParkingCouvert >= {P_parking}
    		AND	
    		(
    			Bien.abi_Ascenceur = {p_ascenceur}
    			OR	Bien.ab_Etage < {p_etage}
    		)
    		AND	
    		(
    			Copro.MetroRer LIKE %{p_metro}%
    			OR	Copro.metro2 LIKE %{p_metro}%
    		)
    		AND	
    		(
    			Bien.a_Balcon = {p_balcon}
    			OR	Bien.am_Terrasse = {p_terrasse}
    			OR	Bien.a_Jardin = {p_jardin}
    		)
    		AND	Bien.estDoublonDe = 0
    	)
    )
    pourtant lorsque je lance une recherche, il ne me retourne pas les lignes ou Bien.IDSsCatbien=null .
    Mais par contre si la valeur bien.IDSsCatbien=0 c'est ok!

    Qq pourrait m'expliquer pourquoi?
    Parce que si une clef etrangere n'est pas renseignée car pas de liaison on doit mettre a celle-ci la valeur NULL, non?
    Donc pourquoi la requete ne me retourne pas les lignes ou Bien.IDSsCatbien=null ?

    merci
    nath

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 90
    Points : 100
    Points
    100
    Par défaut
    Pourquoi mettre NULL dans une rubrique qui est supposée stockée un identifiant ?
    Mais directement 0 si tu n'as pas de CONTACT pour ton BIEN.

    Sinon, puisque tu es en WD12 essaie d'utiliser la fonction SQL : NVL() directement dans ta jointure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SsCatbien RIGHT OUTER JOIN Bien ON SsCatbien.IDSsCatbien = NVL(Bien.IDSsCatbien,0),
    Sans conviction... A tester...

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Points : 260
    Points
    260
    Par défaut
    ouhhhh je me suis trompée, j'ai pas WinDEv12 mais 11

    Mais logiquement, lorsqu'il n'y a pas de valeur, on met NULL, non?Pourquoi mettre 0 si on a rien?
    Si on a un champs NbrChambre par exemple et qu'on a pas d'info la dessus, on va mettre NULL et non 0, car 0 signifie Qu'il n'y a pas de chambre hors on ne sait pas et donc 0 serait faux!

    Ce n'est pas la meme logique pour les identifiants? Spécifité WInDev ou c'est ma memoire qui est buguée??

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 90
    Points : 100
    Points
    100
    Par défaut
    Je ne dis pas que c'est une mauvaise façon de faire mais personnellement je n'ai pas la même logiciel lorsque je travaille sur des id. auto non.
    Un id. auto ne sera jamais égal à zéro. Donc dans les tables en liaisons autant utiliser le 0.

    Quoiqu'il en soit, ça te pose bien un problème dans ton code, donc essaie de mettre un 0 plutot que NULL dans ta table.
    Le SQL est vraiement la grosse faiblesse de WD...
    D'ailleurs, si tu travailles sur HhyperFile et vu que tu es (en fait) en WD11, vérifie bien que les jointures du type RIGHT OUTER JOIN fonctionnent bien (regarde l'aide).
    En WD10, c'est pas utilisable mais on peut utiliser LEFT OUTER JOIN.
    En WD12, c'est supposé marcher.
    En WD11, si c'est utilisable, ça peut peut être seulement "marchouiller".

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Points : 260
    Points
    260
    Par défaut
    merci pour ta reponse. Ok c'est ce que je vais faire.
    Je m'interrogeais sur la fiabilité de mon cerveau(par rapport a ce que j'avais appris a l'ecole....)
    Mais bon lorsqu'on a un esolution qui fonctionne, faut pas trop se poser de question des fois!!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2000] Pb de jointure avec valeur null
    Par popysan dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 07/04/2011, 14h37
  2. [requete] JOINTURE et valeur null
    Par jeepibmx dans le forum SQL
    Réponses: 6
    Dernier message: 18/07/2008, 07h37
  3. [REQUETE] jointure et valeur 'null'
    Par jeepibmx dans le forum Langage SQL
    Réponses: 10
    Dernier message: 17/07/2008, 19h12
  4. Jointure et valeur NULL
    Par BiM dans le forum Langage SQL
    Réponses: 6
    Dernier message: 23/05/2005, 16h26
  5. Type de jointure et valeur NULL
    Par HULK dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/01/2005, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo