Ik ben bezig om firewall rules in mysql vast te leggen. Nu heb ik twee tabellen gemaakt. In de ene tabel heb ik de rules gemaakt. Hierin heeft elk het destination en source subnet een id die verwijst naar een uniek subnet in de andere tabel.
Ik heb dus geen aparate tabellen gemaakt voor de dest en source subnets.
nu wil ik graag een join maken die dus het source en destiniation subnet uit de database haalt.
ik wil dus een query maken die zowel het source en destinatin subnet laat zien. Als ik echter de volgende query maak.
select * from rules,subnets where rules.source_subnet_id = subnets.subnetid and rules.dest_subnet_id = subnets.subnetid;
krijg ik een empty set terug.
ik heb al wel gekeken naar left en right joins maar ik begrijp ze niet helemaal kan iemand me de goede richting op helpen
Ik heb dus geen aparate tabellen gemaakt voor de dest en source subnets.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| mysql> describe rules; +------------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+------------------+------+-----+---------+----------------+ | ruleid | int(10) unsigned | | PRI | NULL | auto_increment | | name | varchar(255) | YES | | NULL | | | source_subnet_id | int(10) unsigned | YES | | NULL | | | dest_subnet_id | int(10) unsigned | YES | | NULL | | | chain_id | int(10) unsigned | YES | | NULL | | +------------------+------------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec) mysql> describe subnets; +----------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+------------------+------+-----+---------+----------------+ | subnetid | int(10) unsigned | | PRI | NULL | auto_increment | | name | varchar(255) | YES | | NULL | | | ip | varchar(15) | YES | | NULL | | | subnet | varchar(15) | YES | | NULL | | +----------+------------------+------+-----+---------+----------------+ 4 rows in set (0.00 sec) mysql> |
nu wil ik graag een join maken die dus het source en destiniation subnet uit de database haalt.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| mysql> select * from rules; +--------+--------------------+------------------+----------------+----------+ | ruleid | name | source_subnet_id | dest_subnet_id | chain_id | +--------+--------------------+------------------+----------------+----------+ | 1 | Forwarding allowed | 1 | 2 | 3 | +--------+--------------------+------------------+----------------+----------+ 1 row in set (0.00 sec) mysql> select * from subnets; +----------+---------------+-------------+---------------+ | subnetid | name | ip | subnet | +----------+---------------+-------------+---------------+ | 1 | Local network | 192.168.0.0 | 255.255.255.0 | | 2 | The World | 0.0.0.0 | 0.0.0.0 | +----------+---------------+-------------+---------------+ 2 rows in set (0.00 sec) mysql> |
ik wil dus een query maken die zowel het source en destinatin subnet laat zien. Als ik echter de volgende query maak.
select * from rules,subnets where rules.source_subnet_id = subnets.subnetid and rules.dest_subnet_id = subnets.subnetid;
krijg ik een empty set terug.
ik heb al wel gekeken naar left en right joins maar ik begrijp ze niet helemaal kan iemand me de goede richting op helpen