Ich gehe davon aus (und hoffe), dass Sie den Benutzernamen nicht zweimal speichern, da dies zu Problemen mit der Datenqualität führt, wenn der Benutzer seinen Namen ändert.
Angenommen, die Tabellen sind wie folgt strukturiert:
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);
Sie können ein GROUP BY
verwenden und HAVING
-Klausel, die Ihnen die UserID
geben würde aller Benutzer mit mehr als 1 (oder einer von Ihnen gewählten Anzahl) Bestellungen. Dann verbinden Sie das mit den Members
Tabelle, um den Namen zu erhalten.
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
Wenn Sie die Namen jedoch bereits gespeichert haben (und das ändert sich nicht), dann können Sie JOIN
überspringen wie unten:
SELECT
UserID,
Name
FROM
Orders
GROUP BY
UserID,
Name
HAVING
COUNT(OrderID) > 1