TableEquipment
EquipmentID
EquipmentType (e.g. Basedrum, Guitar, Speaker Type 1 etc.)
EquipmentName
TableBookings
BookID
EquipmentID
BookDate
Now if you make a request for let's say Equipmenttype = 'Basedrum' for the date of 09/25/03 you would like you said have to see if it is not already booked, you can do that with a simple query like:
Select * from TableEquipment e JOIN TableBookings b ON e.EquipmentID = b.EquipmentID WHERE NOT b.BookDate = '09/25/03'
This would return all Basedrums that are not booked on that day.
Now you can get keen with all that and I am assuming a lot here as I don't even know if they are in categories.
If you just have a list of equipment that you click and select a date you want to book it, then want to get a warning that the piece is not available for said date you would do pretty much the same ...
Select * from tableequipment e join tablebookings b ON e.equipmentid = b.equipmentid where not b.bookdate = @yoursearchvariablehere
If the bookins have a timespan you just put a between into the query so it searches a timeframe.