Je suis bloqué sur la façon d'implémenter cette requête - c'est assez similaire à la requête que j'ai publiée plus tôt mais je ne suis pas capable de la casser.Requête Sql - sélection des 5 premières lignes et sélection des lignes uniquement si l'utilisateur est présent
J'ai une table de magasinage où chaque fois qu'un utilisateur achète quelque chose, un enregistrement est inséré.
Certains champs sont
* shopping_id (primary key)
* store_id
* user_id
Maintenant, ce que je dois est de tirer seulement la liste de ces magasins où il est parmi les 5 premiers visiteurs:
Quand je le décomposer - c'est ce que Je veux accomplir:
* Find all stores where this UserA has visited
* For each of these stores - see who the top 5 visitors are.
* Select the store only if UserA is among the top 5 visitors.
Les requêtes correspondantes seraient:
select store_id from shopping where user_id = xxx
select user_id,count(*) as 'visits' from shopping where store_id in (select store_id from shopping where user_id = xxx) group by user_id order by visits desc limit 5
Maintenant, j'ai besoin de vérifier dans ce resultset si UserA est présent et sélectionnez ce magasin seulement s'il est présent. Par exemple, s'il a visité un magasin 5 fois - mais s'il y a 5 personnes ou plus qui ont visité ce magasin plus de 5 fois - alors ce magasin ne devrait pas être sélectionné.
Donc, je suis un peu perdu ici.
Merci pour votre aide
Merci Larry - J'ai la table des magasins, mais qui contient des informations uniquement sur le magasin, comme le nom de l'adresse, etc. Donc, je dois le changer à SELECT DISTINCT store_id FROM shopping. Aussi, si je veux combiner en une seule requête - est-ce que cela va ressembler:
Merci aussi – GubloooMysql lance une erreur en disant - Cette version de Mysql ne supporte pas Limiter en sous-requête - J'utilise Mysql version 5 – Gublooo