Jeg går ud fra (og håber), at du ikke gemmer brugerens navn to gange, da det fører til problemer med datakvaliteten, når brugeren skifter navn.
Forudsat at tabellerne er struktureret som nedenfor:
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);
Du kan bruge en GROUP BY
og HAVING
klausul, som ville give dig UserID
af alle brugere med mere end 1 (eller hvilket antal du end vælger) ordrer. Derefter tilslutter du det til Members
tabel for at få navnet.
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
Men hvis du allerede har gemt navnene (og det ændrer sig ikke), så kan du springe JOIN
over som nedenfor:
SELECT
UserID,
Name
FROM
Orders
GROUP BY
UserID,
Name
HAVING
COUNT(OrderID) > 1