Tecnicamente, puoi farlo solo con SQL dinamico, il che significa Sintassi dell'istruzione preparata di MySQL o concatenazione di stringhe per creare la query prima di inviarla al database. Le istruzioni preparate sono la scelta preferibile, grazie alla migliore difesa dall'iniezione di SQL.
Potresti usare LEFT JOINs alle varie tabelle, ma significherebbe includere numerose colonne da ciascuna delle tabelle (armi, scudi, spade...) che sarebbero nulle se la categoria non corrispondesse. Sarebbe orribile provare a estrarre dati da una singola query...
PS:Perché c'è una SWORD
tavolo? Non sarebbe coperto da WEAPON
tavolo?