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

Langage SQL Discussion :

Pb de null


Sujet :

Langage SQL

  1. #1
    Membre habitué Avatar de nesbla
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 220
    Points : 139
    Points
    139
    Par défaut Pb de null
    Bonjour,

    Je ne sais pas si c'est possible mais je souhaiterai dans mon SELECT mettre à null une colonne si un autre colonne est non nulle. J'ai une base Mysql.

    Je m'explique :

    j'ai une requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT *  FROM Publications  WHERE Tiroir = '03A0000000' OR AutrePub = '03A0000000'  ORDER BY IFNULL(ordre,99) ASC, DateCreationFichier DESC;
    En fait l'idéal serait de définir ORDRE à null (ou 99) si la colonne AUTREPUB n'est pas nulle.

    Si vous pouvez m'éclairer ça me serait d'une grande aide !
    Merci

  2. #2
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    mais avec ta requête tu ne peux pas savoir si AutrePub est null ou pas, tu peux simplement savoir s'il n'est pas égal à 03A0000000.

  3. #3
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Construis 2 requêtes, une pour les NULL, et construis ta vue avec un UNION. Tu pourras ensuite trier tes valeurs en ajoutant un champ numérique dans chacuns de tes requêtes, nommé via un alias et donc tu forceras la valeur dans ton select

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Create Or Replave maVue As
    Select 1 As Tri, ... FROM ... WHERE ...
    UNION ALL
    Select 2 As Tri, ... FROM ... WHERE ...
    Puis tu appelles ta vue en triant via le champ Tri

  4. #4
    Membre habitué Avatar de nesbla
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 220
    Points : 139
    Points
    139
    Par défaut
    Je travaille avec Mysql 4.x, je n'ai pas la possibilité des créer des vues (ou alors je suis mal informé).

    Je me suis peut etre mal exprimé, je recommence :

    Pour simplifier j'ai 3 colonnes :
    - tiroir
    - autrepub
    - ordre

    je fais un select sur cette table en les classant par les valeurs entrées dans ORDRE (1,2,3,etc...).

    Je veux que si la colonne AUTREPUB != NULL , ORDRE=NULL
    Seulement je ne sais pas si c'est possible.

    Merci !

  5. #5
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    Tu doit pouvoir gérer le truc avec des transactions mais si tu progs en PHP par exemple, je crois que ça sera bien plus simple de le faire dans PHP (et plus rapide).

  6. #6
    Membre habitué Avatar de nesbla
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 220
    Points : 139
    Points
    139
    Par défaut
    C'est bon je viens de trouver :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT tiroir, autrepub, (case when (AutrePub !=null ) then null else ORDRE end) as newOrdre,ORDRE FROM Publications ORDER BY newORDRE asc;
    En fait je crée un nouvel ordre qui vaut null si autrepub différent de null et qui vaut ordre le cas contraire et je fais un ORDER BY ce newOrdre.

    Merci en tout cas !
    Loïc

  7. #7
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    Essaie comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT tiroir, autrepub, null AS newOrdre
    FROM Publications
    WHERE AutrePub IS NOT NULL
     
    UNION
     
    SELECT tiroir, autrepub, ORDRE AS newOrdre
    FROM Publications
    WHERE AutrePub IS NULL
     
    ORDER BY newOrdre
    normalement c'est plus performant qu'avec un CASE

  8. #8
    Membre habitué Avatar de nesbla
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 220
    Points : 139
    Points
    139
    Par défaut
    ok je tenterai ca demain en retournant au boulot

    Merci bien !

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

Discussions similaires

  1. PROBLEME AVEC LES REQUETES IS NULL / NOT EXISTS
    Par sylvaine dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/06/2004, 13h26
  2. Comment rediriger la sortie vers /dev/null
    Par dclink dans le forum C
    Réponses: 4
    Dernier message: 24/06/2003, 18h23
  3. Tester si un champ est NULL
    Par titititi007 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/06/2003, 10h17
  4. [VB6] [BDD] Recordset et champ égal à Null
    Par Gr|ppen dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/03/2003, 10h00
  5. "ALTERER" une col. NULL en NOT NULL - Int
    Par Gandalf24 dans le forum SQL
    Réponses: 2
    Dernier message: 28/12/2002, 00h07

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