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 :

Requete avec condition


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut Requete avec condition
    Bonjour à tous,

    j'ai quelque chose d'un peu complexe (ou pluotot noueau) pour moi et je voudrais avoir votre avis

    Voici ma requete de base qui fonctionne tres bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT o.id_objet, nom_rus, etc
    FROM objet_commun o 
      INNER JOIN objet_rus l
        ON o.id_objet = l.id_objet 
      INNER JOIN francais f 
        ON o.id_antiquaire = f.id_antiquaire 
      INNER JOIN antiquaire_client c 
        ON o.id_antiquaire = c.id_antiquaire 
    WHERE o.id_objet = 5012
    Cela fonctionne mais j'ai des rajouts a effectuer.

    1. La table objet_rus n'existe peut-etre pas et dans ce cas, je dois prendre la table objet_eng (je pense que ce n'est pas verifiable dans la requete, donc je laisse pour plus tard.)
    2. Le champs "nom_rus" est peut etre vide et dans ce cas, il faut prendre dans une autre table "objet_eng", le champ "nom_eng";

    Quelqu'un aurait-il une idée ?

    Merci d'avance.

  2. #2
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    bon en fait, j'ai modifié mes tables pour que les nom de chaps s'appellent nom pour toutes les tables plutot que nom_rus, nom_eng. Ct ridicule !!

    Mais si quelqu'un a la solution tout de même, ca pourrait être sympa de le savoir.

  3. #3
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    Les tables n'existent pas (?!!!) où peuvent être non renseignées pour certains cas que tu détailles ?

    cas tables non renseignées
    Dans ce cas il faudrait utiliser des LEFT JOIN avec des CASE WHEN dans le SELECT.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT o.id_objet, (case when l_rus is not  null then nom_rus when l_eng is not  null then nom_eng end) as nom, etc 
    FROM objet_commun o 
      INNER JOIN francais f 
        ON o.id_antiquaire = f.id_antiquaire 
      INNER JOIN antiquaire_client c 
        ON o.id_antiquaire = c.id_antiquaire 
      LEFT JOIN objet_rus l_rus 
        ON o.id_objet = l1.id_objet 
      LEFT JOIN objet_eng l_eng
        ON o.id_objet = l2.id_objet 
    WHERE o.id_objet = 5012


    cas tables inexistantes
    Donc il y aurait plusieurs utilisateurs qui verraient chacun des tables diffèrentes.

    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
    utilisateurs 1 : 
    create view v_objet_langue as select id_objet, nom_rus as nom from objet_rus
     
    utilisateurs 2 : 
    create view v_objet_langue as select id_objet, nom_eng as nom from objet_eng
     
    SELECT o.id_objet, nom, etc 
    FROM objet_commun o 
      INNER JOIN v_objet_langue l 
        ON o.id_objet = l.id_objet 
      INNER JOIN francais f 
        ON o.id_antiquaire = f.id_antiquaire 
      INNER JOIN antiquaire_client c 
        ON o.id_antiquaire = c.id_antiquaire 
    WHERE o.id_objet = 5012
    Mais en fait

    ..il y a peut-être un problème de modélisation. Il y a autant de tables que de langues plutôt qu'un code langue dans une table objet_langue ? et c'est quoi cette table "français" ?

  4. #4
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    je te ermercie, ct exacetement ce qui me fallait.

    En fait, francais pporte un nom pas tres explicite, c'est une table de tous les prospecs. Mias j'ai du recuperer une base existante et c'est pas la joie !

    Par contre, il y a bien une table objet par langue. J'avai speur que cela devienne enorme dans les requetes car ce sont des dizaines de milieuyx de tuples dans chaque table avec des champs text assez lourd, donc j'ai fait la séparation.

    Merci encore.

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

Discussions similaires

  1. [A-03] requete avec conditions
    Par QUALIF dans le forum IHM
    Réponses: 3
    Dernier message: 01/03/2009, 17h18
  2. requete avec condition
    Par swissmade dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 13/08/2007, 12h32
  3. Requete avec condition sur une partie de l'affichage
    Par dinver78 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/07/2007, 10h19
  4. Requete avec condition interne
    Par inge2007 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/02/2007, 15h29
  5. Calculs dans une requete avec conditions multiples
    Par Sha1966 dans le forum Access
    Réponses: 3
    Dernier message: 13/01/2006, 16h18

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