2015-09-04 2 views
2

J'ai deux tables utilisateurs et requêtes. les utilisateurs peuvent poster plusieurs requêtes.Appliquer une limite à la table de jointure dans mysql

MySQL schéma de table: -

CREATE TABLE `users` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT, 
    `email` varchar(100) NOT NULL, 
    `password` varchar(50) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

CREATE TABLE `queries` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT, 
    `user_id` int(11) NOT NULL, 
    `address` text, 
    `city` varchar(100) NOT NULL, 
    `state` varchar(100) NOT NULL, 
    `zipcode` int(11) NOT NULL, 
    `created` datetime NOT NULL, 
    `modified` datetime NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

Je veux appliquer la limite à ce que la requête 5 requêtes de chercher la table de requêtes pour chaque utilisateur.

Comment écrire une requête pour cela?

+0

SELECT * FROM 'queries' que qry gauche se joindre' users' comme usr sur usr.id = qry.user_id limite de 5 ===== Vous pouvez également utiliser par ordre clause –

Répondre

2

essayer it-

SELECT x.* 
FROM (SELECT t.user_id,t.id, 
       CASE 
       WHEN @category != t.user_id THEN @rownum := 1 
       ELSE @rownum := @rownum + 1 
       END AS rank, 
       @category := t.user_id AS var_category 
      FROM queries t 
      JOIN (SELECT @rownum := NULL, @category := '') r  
     ORDER BY t.user_id,t.id) X 
     WHERE x.rank<=5