Estou assumindo (e esperando) que você não esteja armazenando o nome do usuário duas vezes, pois isso leva a problemas de qualidade de dados quando o usuário altera o nome.
Assumindo que as tabelas estão estruturadas como abaixo:
CREATE TABLE
Members
(
UserID INT,
Name VARCHAR(15)
);
INSERT INTO
Members
VALUES
(111, 'Peter'),
(222, 'Bart'),
(333, 'Joe'),
(444, 'Andrew');
CREATE TABLE
Orders
(
OrderID INT,
UserID INT
);
INSERT INTO
Orders
VALUES
(777, 111),
(888, 333),
(999, 111),
(101, 444),
(102, 111),
(103, 333);
Você pode usar um
GROUP BY
e HAVING
cláusula que lhe daria o UserID
de todos os usuários com mais de 1 (ou o número que você escolher) pedidos. Então, você junta isso aos Members
tabela para obter o nome. SELECT
Orders.UserID,
Members.Name
FROM
Orders
INNER JOIN
Members
ON Orders.UserID = Members.UserID
GROUP BY
UserID,
Members.Name
HAVING
COUNT(OrderID) > 1;
SQLFiddle:http://sqlfiddle.com/#!9/1dadc4/2
No entanto, se você já tiver os nomes armazenados (e isso não mudará), pule o
JOIN
como abaixo:SELECT
UserID,
Name
FROM
Orders
GROUP BY
UserID,
Name
HAVING
COUNT(OrderID) > 1