If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
|
Thread Tools | Display Modes |
#1
|
|||
|
|||
Show only free IP addresses when selecting address to certain device?
There is one-to-one relationship between IP table and Device table.
IP table has ID (primary key) and four ip fields. Device table has ipID field (foreign key) and other fields which are not relevant to this matter. The probles is that in the device form the ip dropdown now only shows the reserved IPs, not the free IPs from IP table. The query in dropdown is as follows: SELECT tblIP.ID, [ip] & "." & [ip2] & "." & [ip3] & "." & [ip4] AS [IP- number], tblDevice.ipID FROM tblIP INNER JOIN tblDevice ON tblIP.ID = tblDevice.ipID ORDER BY tblIP.ip, tblIP.ip2, tblIP.ip3, tblIP.ip4; the result set shows only IP numbers that has assigned to device. if I add condition WHERE (((tblDevice.ipID) Is Null)), so I want a "negation" (show all records in IP table that has not assigned to device (free), the result set is empty) Now what? btw. Is it right to have IPs in four separate fields? Is there a better way? Sandroid |
#2
|
|||
|
|||
Show only free IP addresses when selecting address to certain devi
Sandroid -
In order to see records that are not in both tables of a join, you need an outer join instead of an inner join. change INNER to LEFT, and then you can add your criteria, like this: SELECT tblIP.ID, [ip] & "." & [ip2] & "." & [ip3] & "." & [ip4] AS [IP- number], tblDevice.ipID FROM tblIP LEFT JOIN tblDevice ON tblIP.ID = tblDevice.ipID ORDER BY tblIP.ip, tblIP.ip2, tblIP.ip3, tblIP.ip4 WHERE (((tblDevice.ipID) Is Null)); As for the IP Addresses, I would normally store the ip address in a single text field, unless for some reason you need to work with the individual parts. -- Daryl S "Sandroid" wrote: There is one-to-one relationship between IP table and Device table. IP table has ID (primary key) and four ip fields. Device table has ipID field (foreign key) and other fields which are not relevant to this matter. The probles is that in the device form the ip dropdown now only shows the reserved IPs, not the free IPs from IP table. The query in dropdown is as follows: SELECT tblIP.ID, [ip] & "." & [ip2] & "." & [ip3] & "." & [ip4] AS [IP- number], tblDevice.ipID FROM tblIP INNER JOIN tblDevice ON tblIP.ID = tblDevice.ipID ORDER BY tblIP.ip, tblIP.ip2, tblIP.ip3, tblIP.ip4; the result set shows only IP numbers that has assigned to device. if I add condition WHERE (((tblDevice.ipID) Is Null)), so I want a "negation" (show all records in IP table that has not assigned to device (free), the result set is empty) Now what? btw. Is it right to have IPs in four separate fields? Is there a better way? Sandroid . |
#3
|
|||
|
|||
Show only free IP addresses when selecting address to certaindevi
Thanks
Worked. Now problem is when I delete the device IP number from IP table also deletes. I want to "free" ip number when I remove device from database. How to accomplish this? S On 22 maalis, 16:20, Daryl S wrote: Sandroid - In order to see records that are not in both tables of a join, you need an outer join instead of an inner join. *change INNER to LEFT, and then you can add your criteria, like this: SELECT tblIP.ID, [ip] & "." & [ip2] & "." & [ip3] & "." & [ip4] AS [IP- number], tblDevice.ipID FROM tblIP LEFT JOIN tblDevice ON tblIP.ID = tblDevice.ipID ORDER BY tblIP.ip, tblIP.ip2, tblIP.ip3, tblIP.ip4 WHERE (((tblDevice.ipID) Is Null)); As for the IP Addresses, I would normally store the ip address in a single text field, unless for some reason you need to work with the individual parts. -- Daryl S "Sandroid" wrote: There is one-to-one relationship between IP table and Device table. IP table has ID (primary key) and four ip fields. Device table has ipID field (foreign key) and other fields which are not relevant to this matter. The probles is that in the device form the ip dropdown now only shows the reserved IPs, not the free IPs from IP table. The query in dropdown is as follows: SELECT tblIP.ID, [ip] & "." & [ip2] & "." & [ip3] & "." & [ip4] AS [IP- number], tblDevice.ipID FROM tblIP INNER JOIN tblDevice ON tblIP.ID = tblDevice.ipID ORDER BY tblIP.ip, tblIP.ip2, tblIP.ip3, tblIP.ip4; the result set shows only IP numbers that has assigned to device. if I add condition WHERE (((tblDevice.ipID) Is Null)), so I want a "negation" (show all records in IP table that has not assigned to device (free), the result set is empty) Now what? btw. Is it right to have IPs in four separate fields? Is there a better way? Sandroid . |
Thread Tools | |
Display Modes | |
|
|