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 :

Requête SQL problème :(


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 65
    Par défaut Requête SQL problème :(
    Bonjour,
    voilà je suis en train de réaliser des requêtes sur une base de donnée (sous SequelPro sur MAC) et j'ai quelques soucis.
    Je m'explique, ma base de donnée comporte pour faire simple quatre champs différents (id, ip, license et date). Lorsqu'une personne se connecte sur le logiciel, un id est ajouté, on retrouve des informations ect que l'on peut avoir déjà reçu (si cette personne c'est déjà co).
    Le soucis est que j'essaye de faire une requête me permettant de voir qu'elles sont les personnes étant passé de la version gratuite du logiciel à la version payante. Mais le soucis est que je dois pouvoir faire en gros un code qui que :
    'la personne a le logiciel version démo' puis 'est passée à la version payante' mais je ne dois pas changé de champ puisque tout ce passe dans le champ license. J'espère avoir été assez clair
    SmveZoo

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 630
    Billets dans le blog
    10
    Par défaut
    Quand une personne qui a la version gratuite achète la version payante, y a -t- il une nouvelle ligne créée dans la table ou alors c'est une mise à jour de la colonne licence ?

    Si c'est une mise à jour, sauf si vous avez un historique, vous ne pourrez pas retrouver les personnes concernées
    Si c'est une nouvelle ligne, c'est possible à condition d'avoir un critère permettant d'identifier que tel n° de licence est gratuit et tel autre payant, par exemple via une jointure sur une autre table
    Qu'en est il ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 65
    Par défaut
    Bonjour, une nouvelle ligne est créée dans la table à chaque connexion d'un utilisateur du logiciel c'est-à-dire que lorsqu'un utilisateur va se connecter avec la version gratuite sa connection sera marqué avec son GUID et son IP tandis que lorsque l'utilisateur se connectera à nouveau on le reconnaitra par rapport à son GUID/IP et il se peut qu'à ce moment là la license soit passé de gratuite à une license payante.
    J'espère avoir été compris
    SmveZoo

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 630
    Billets dans le blog
    10
    Par défaut
    D'accord, mais vous n'indiquez toujours pas où est l'information qui permet de savoir que tel n° de licence est gratuit ou payant
    Sans cette information, impossible de vous aider

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 65
    Par défaut
    L'information se trouve dans le même champ 'license', si l'utilisateur se connecte avec une license gratuite on verra 'TRIAL' sinon on voit son numéro de license

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 630
    Billets dans le blog
    10
    Par défaut
    Vu qu'un enregistrement est créé dans la table à chaque connexion, la solution est de vérifier qu'il n'existe pas déjà un enregistrement dans la table, pour la personne, dont le n° de licence est différent de "TRIAL". Soit la requête suivante :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Select MAIN.IP      as ID_Personne
         , MAIN.license as Num_Licence 
    from ma_table as MAIN
    Where MAIN.License <> 'TRIAL'
      and not exists
         (select 1
          from ma_table as SUBQ
          where SUBQ.IP=MAIN.IP
            and SUBQ.License<>'TRIAL'
            and SUBQ.ID<>MAIN.ID)
    Quelques remarques :
    • Une colonne d'horodatage serait utile, ne serait-ce que pour savoir quand la personne est passée du gratuit au payant
    • Licence s'écrit avec 2 "C" autant nommer les objets base de données correctement
    • La requête ne sera pas performante, le filtre utilise un prédicat "<>" par définition non sargable, si votre table est volumineuse, il faudra réfléchir à revoir votre modèle de données et/ou votre fonctionnement

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

Discussions similaires

  1. requête SQL problème avec relation N-N
    Par p'tite Sandrine dans le forum Requêtes et SQL.
    Réponses: 23
    Dernier message: 05/10/2007, 12h08
  2. Requête SQL, problème d'écriture
    Par porci82 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 04/06/2007, 14h56
  3. [Requête/SQL]Problème de sélection d'enregistrements
    Par phil06 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 15/04/2007, 23h47
  4. [Requêtes SQL] Problème de jointure ?
    Par soso78 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 18/12/2006, 15h37
  5. [Requête SQL] Problème pour echantilloner
    Par jool dans le forum Langage SQL
    Réponses: 6
    Dernier message: 27/08/2005, 09h08

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