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

Requêtes MySQL Discussion :

Faire un select test sur deux tables non liées


Sujet :

Requêtes MySQL

  1. #1
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 354
    Points : 410
    Points
    410
    Par défaut Faire un select test sur deux tables non liées
    Bonsoir,

    je souhaiterais savoir si il serait possible de faire ceci :

    - j'ai deux profils d'utilisateurs donc une table par profil avec des champs différents, sauf au niveau de l'adresse mail et du mot de passe qui sont deux champs communs à tous les profils (un "profil" correspondant à une "table").

    Question : J'aimerais lorsqu'un utilisateur d'un profil A ou B se connecte, pouvoir vérifier son authentification en testant dans en une même requête ma table de profil A et ma table de profil B.

    J'ai tenté cette requête, qui si personne n'existe, renvoie rien ok, mais si la personne qui se connecte correspond à un enregistrement du profil B par exemple, ça me rend le jeu du profil B qu'il me faut + un jeu du profil A, donc je me retrouve à ne plus savoir qui est le bon utilisateur authentifié, si il appartient au profil A ou au profil B.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT pa.nom, pb.nom FROM profil_A as pa, profil_B as pb WHERE (pa.login=? AND pa.email=?) OR (pb.login=? AND pb.email=?)
    Y a t-il une formulation de requête particulière ou une quelconque possibilité d'opérer pour tester plusieurs tables de profils et piocher le bon utilisateur qui se connecte, le tout en restant sur une unique requête?

  2. #2
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Points : 889
    Points
    889
    Par défaut
    Bonjour
    Regarde du côté de UNION
    UNION est utilisé pour combiner le résultat de plusieurs requêtes SELECT en un seul résultat.

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    Vous avez un probleme de modélisation.

    Vous avez mélangé deux notions dans un même entité du coup vous vous retrouvez à devoir faire des requêtes complexe pour rien.

    Il vous manque à minima une entité utilisateur qui serai associée à 1 ou n profil

  4. #4
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 354
    Points : 410
    Points
    410
    Par défaut
    Bonjour et merci pour vos solutions. En effet union correspondait à mes besoins ypcman.

    D'un point de vue conceptuel, j'ai commencé par une autre approche de modélisation punkoff, mais j'avais une table utilisateurs avec un id_profil, qui renvoyait donc sur une table profils.

    Le problème c'est que mes champs de la table profils n'allaient pas être les mêmes en typage et en contenu selon le profil et que je ne voulais pas créer X champs dont certains resteraient vides selon le profil.

    Alors je suis entre 2. J'ai une autre possibilité d'inclure une autre table qui modéliserait chaque profil, et la 2e table ferait le lien entre les utilisateurs et la 3e.

    Moi ce qui me dérangeait dans le fait de regrouper tous les utilisateurs dans une même table, c'est qu'ils sont très différents.

    Mais après, je me trompe surement, et je ne choisis pas forcément la façon la plus optimisée, et il m'arrive souvent de changer tout un système quand il ne me convient plus.

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    pensez à l'héritage.

    Toutes les données communes identiques dans une table mère, et les données spécifiques dans les tables filles.

    Ça facilitera les cas comme celui-ci, et vous permettra d'alléger certains traitements de doublons par exemple.

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

Discussions similaires

  1. Requete sur deux tables non liés
    Par dark-liline dans le forum Langage SQL
    Réponses: 6
    Dernier message: 23/03/2010, 15h22
  2. [AC-2003] Requête égalité entre deux tables non liées.
    Par Thotho-Maxime dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 28/07/2009, 09h14
  3. select distint() sur deux tables
    Par nimbus_77 dans le forum Requêtes
    Réponses: 2
    Dernier message: 14/06/2008, 11h51
  4. deux tables non liées dans un formulaire
    Par zermatt dans le forum IHM
    Réponses: 9
    Dernier message: 16/01/2007, 17h41
  5. requete sur des tables non liées
    Par matesp dans le forum Access
    Réponses: 3
    Dernier message: 03/05/2006, 17h01

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