sql >> Database >  >> RDS >> Oracle

Converteer SQL-query om set-operators te gebruiken

Het is niet hoe je dit normaal zou doen, maar als oefening kun je de set van alle klant-ID's krijgen, en MINUS de set van alle ID's met meer dan twee transacties, die je kunt krijgen zonder een seconde naar de klantentabel te kijken tijd:

SELECT C.ID
FROM CUSTOMER C
MINUS
SELECT P.ID
FROM PERFORMS P
INNER JOIN TRANSACTION T
ON T.CODE = P.CODE
GROUP BY P.ID
HAVING COUNT(T.CODE) > 1;

U hoeft niet echt lid te worden van TRANSACTION, u kunt de codewaarden in PERFORMS gewoon rechtstreeks tellen:

SELECT C.ID
FROM CUSTOMER C
MINUS
SELECT P.ID
FROM PERFORMS P
GROUP BY P.ID
HAVING COUNT(P.CODE) > 1;

... maar misschien is er meer aan de hand wat je hebt laten zien, zoals beperken op type of datum.




  1. Hoe schrijf je een SQL-query die het aantal rijen per maand en per jaar telt?

  2. MySQL, update meerdere tabellen met één query

  3. verander mysql in pdo en sla het resultaat op in variabele

  4. Rijen selecteren op basis van een paar regels