====== SQL examples ======
Just useful code snippets, examples not functional code.
===== Table columns =====
MariaDB [accesscontrol]> select * from keycards;
+--------+------------+---------------------+---------------------+----------+
| cardID | cardNumber | Created             | Deleted             | issuedTo |
+--------+------------+---------------------+---------------------+----------+
|      1 | 1234       | 2024-05-07 12:28:20 | 0000-00-00 00:00:00 |        3 |
|      2 | 2345       | 2024-05-07 12:28:32 | 0000-00-00 00:00:00 |        3 |
|      3 | 3456       | 2024-05-07 12:28:45 | 0000-00-00 00:00:00 |        1 |
|      4 | 4567       | 2024-05-07 12:28:54 | 0000-00-00 00:00:00 |        2 |
+--------+------------+---------------------+---------------------+----------+
> select * from users;
+--------+-----------+-----------+----------+-----+---------------------+---------------------+
| userID | username  | firstname | surname  | pin | created             | deleted             |
+--------+-----------+-----------+----------+-----+---------------------+---------------------+
|      1 | as        | A*        | S*       |   0 | 2024-05-07 11:29:25 | 0000-00-00 00:00:00 |
|      2 | os        | O*        | S*       |   0 | 2024-05-07 11:30:30 | 0000-00-00 00:00:00 |
|      3 | hs        | H*        | S*       |   0 | 2024-05-07 11:31:02 | 0000-00-00 00:00:00 |
+--------+-----------+-----------+----------+-----+---------------------+---------------------+
> SELECT * FROM access;
+----------+--------+-------------+--------+
| accessID | doorID | accesslevel | cardID |
+----------+--------+-------------+--------+
|        1 |      1 | allowed     |      1 |
|        2 |      1 | denied      |      2 |
|        3 |      1 | denied      |      3 |
|        4 |      2 | denied      |      1 |
|        5 |      2 | allowed     |      2 |
|        6 |      2 | allowed     |      3 |
+----------+--------+-------------+--------+
===== Useful selects =====
> select username from users inner join keycards on keycards.issuedTo = users.userID where users.username = 'hs';
+----------+
| username |
+----------+
| hs       |
| hs       |
+----------+
> select username, keycards.cardNumber from users inner join keycards on keycards.issuedTo = users.userID where users.username = 'os';
+----------+------------+
| username | cardNumber |
+----------+------------+
| os       | 4567       |
+----------+------------+
1 row in set (0.000 sec)
> select username, keycards.cardNumber from users inner join keycards on keycards.issuedTo = users.userID where users.username = 'hs';
+----------+------------+
| username | cardNumber |
+----------+------------+
| hs       | 1234       |
| hs       | 2345       |
+----------+------------+
2 rows in set (0.000 sec)
> SELECT * FROM access JOIN keycards ON access.userID = keycards.userID \G;
*************************** 1. row ***************************
   accessID: 1
     userID: 1
accesslevel: {
        "description": "access",
        "front_door": "allowed",
        "cellar_door": "denied"
}
     cardID: 3
 cardNumber: 3456
    Created: 2024-05-07 12:28:45
    Deleted: 0000-00-00 00:00:00
     userID: 1
*************************** 2. row ***************************
   accessID: 2
     userID: 2
accesslevel: {
        "description": "access",
        "front_door": "denied",
        "cellar_door": "denied"
}
     cardID: 4
 cardNumber: 4567
    Created: 2024-05-07 12:28:54
    Deleted: 0000-00-00 00:00:00
     userID: 2
2 rows in set (0.079 sec)
With WHERE to select just one card
SELECT `accesslevel` 
FROM `access` 
JOIN `keycards` ON `access`.`cardID` = `keycards`.`cardID` 
WHERE `keycards`.`cardID` = 2 ;
{
1 : "denied",
2 : "denied",
3 : "allowed"
}
> select keycards.cardNumber, users.username
    -> from keycards
    -> inner join users on keycards.userID = users.userID;
+------------+-----------+
| cardNumber | username  |
+------------+-----------+
| 1234       | hds       |
| 2345       | hds       |
| 3456       | as        |
| 4567       | oas       |
+------------+-----------+