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 :

[MySQL] dernieres entrees par utilisateur


Sujet :

Langage SQL

  1. #1
    Membre averti Avatar de bourvil
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : Juin 2002
    Messages : 411
    Points : 329
    Points
    329
    Par défaut [MySQL] dernieres entrees par utilisateur
    salut,
    voila mon probleme:
    j'ai deux tables:users - avec tous les renseignements des utilisateurs
    et items - avec toutes les annonces.
    dans la tables items j'ai un champs user_id qui relie les deux tables.
    je souhaiterai obtenir les deux dernieres annonces de tout mes users.
    j'ai pense faire ca avec un union mais ca parait tres lourd.
    quelqu'un a une idee?
    merci

  2. #2
    Membre averti Avatar de piff62
    Inscrit en
    Décembre 2003
    Messages
    431
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Décembre 2003
    Messages : 431
    Points : 417
    Points
    417
    Par défaut
    Citation Envoyé par bourvil
    salut,
    voila mon probleme:
    j'ai deux tables:users - avec tous les renseignements des utilisateurs
    et items - avec toutes les annonces.
    dans la tables items chez un champs user_id qui relie les deux tables.
    je souhaiterai obtenir les deux dernieres annonces de tout mes users.
    j'ai penser faire ca avec un union mais ca parait tres lourd.
    quelqu'un a une idee?
    merci
    Avec quel SGBDR travail tu? MySQL ? PostGreSQL? un autre?

  3. #3
    Membre averti Avatar de bourvil
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : Juin 2002
    Messages : 411
    Points : 329
    Points
    329
    Par défaut
    j'utilise Mysql

  4. #4
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Il faudrait que tu donnes le descriptif de tes tables pour qu'on puisse t'aider.

  5. #5
    Membre averti Avatar de bourvil
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : Juin 2002
    Messages : 411
    Points : 329
    Points
    329
    Par défaut
    merci de vos reponses!

    table users:
    • clef: id
    • lname
    • fname
    • adresse
    • tel
    • created
    table items:
    • clefs: id
    • userd_id
    • annonce
    • created

  6. #6
    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
    Voici une requête basique le démarrage : une jointure simple et un tri descendant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT lname, fname, annonce, created
      FROM Users INNER JOIN Items ON Users.id = UserId
     ORDER BY created DESC;
    - Si tu veux filtrer par user, il ne te reste qu'à rajouter une clause WHERE
    - Si tu veux limiter le nombre d'entrée, une recherche sur LIMIT dans ce forum te donnera la syntaxe appropriée,

    Bon code

  7. #7
    Membre averti Avatar de bourvil
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : Juin 2002
    Messages : 411
    Points : 329
    Points
    329
    Par défaut
    oui merci mais ca repond pas a mon probleme!
    je souhaiterais avoir les deux dernieres annonces de chaque users!
    et ca je peux pas le faire avec ce que tu m'as donner

  8. #8
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT u.lname, u.fname, i1.annonce, i1.created
    FROM Users u inner join items i1 
                       on u.Id = i1.userd_id
                 inner join items i2 
                       on  u.Id = i2.userd_id
                       and i1.created >= i2.created
    GROUP BY u.lname, u.fname, u.id, i1.annonce, i1.created, i1.Id
    HAVING COUNT(*) <= 2

  9. #9
    Membre averti Avatar de bourvil
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : Juin 2002
    Messages : 411
    Points : 329
    Points
    329
    Par défaut
    merci mediat mais ca ne marche pas! il manque des annonces et c'est tres long.

    j'avais essaye ca:
    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
     
    SELECT users.id , b1.id as annonce, b1.created
    FROM users
    LEFT OUTER JOIN board_items b1
    ON ( users.id= b1.user_id )
     
    LEFT OUTER JOIN board_items b2
    ON ( b1.user_id = b2.user_id AND b1.created <= b2.created )
    where   users.approved = 'Y'
     and users.expire_date > NOW() and 
     users.is_realtor='Y' and users.is_builder='N'
     and b1.expire_date > NOW()
     and 
     b1.active='Y' and 
     b1.show_site_only  = 'Y' and 
     ((TO_DAYS(NOW()) - TO_DAYS(b1.created) <= 180)) and 
     b1.paid <> 'N'
    GROUP BY users.id, b1.id
    HAVING COUNT(b1.id) <= 2
    ORDER BY users.id, b1.created
    mais la non plus ce me donne pas toutes les annonces

Discussions similaires

  1. Logs requêtes MySQL par utilisateur
    Par JeyelDev dans le forum Administration
    Réponses: 7
    Dernier message: 02/12/2014, 12h47
  2. Bases de données MySQL par utilisateur Linux
    Par bnadem35 dans le forum Installation
    Réponses: 0
    Dernier message: 27/05/2010, 16h33
  3. recuperer valeur entree par utilisateur
    Par benjone dans le forum ActionScript 3
    Réponses: 3
    Dernier message: 28/12/2009, 17h17
  4. Réponses: 11
    Dernier message: 07/02/2009, 01h31
  5. Trouver les fichiers par utilisateurs
    Par calfater dans le forum Windows XP
    Réponses: 2
    Dernier message: 11/10/2005, 17h30

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