Supongo (y espero) que no almacene el nombre del usuario dos veces, ya que eso genera problemas de calidad de los datos cuando el usuario cambia su nombre.
Asumiendo que las tablas están estructuradas como se muestra a continuación:
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);
Puedes usar un GROUP BY
y HAVING
cláusula que le daría el UserID
de todos los usuarios con más de 1 (o el número que elija) pedidos. Luego, lo unes a los Members
tabla para obtener el nombre.
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
Sin embargo, si ya tiene los nombres almacenados (y eso no cambia), puede omitir JOIN
como a continuación:
SELECT
UserID,
Name
FROM
Orders
GROUP BY
UserID,
Name
HAVING
COUNT(OrderID) > 1