Als u zich in een situatie bevindt waarin u column1
. begint te krijgen , column2
op de tafel - de kans is groot dat uw ontwerp gebrekkig wordt, en u moet in plaats daarvan een aparte tabel maken - waar elke columnX
krijgt een eigen rij. Het is (bijna) altijd beter om een aparte tabel te hebben als je merkt dat je meerdere herhalende kolommen in dezelfde tabel hebt.
Op die manier vermijdt u het opslaan van door komma's gescheiden waarden in kolommen, vermijdt u het breken van uw code/query's als u plotseling een andere waarde moet invoeren column{X+1}
- en kan in plaats daarvan zo veel of zo weinig invoerwaarden hebben als nodig is.
Voor jou zou dat zoiets zijn als een nieuwe tabel genaamd land_owner_input
, waar je de waarde hebt (die je zou plaatsen in columnX
), en een verwijzing naar de rij in land_owner
waar de waarde bij hoort.
Een typisch ontwerppatroon zou zoiets zijn als dit.
CREATE TABLE land_owner_input (
land_owner_input_id INT(11) AUTO_INCREMENT
land_owner_id INT(11),
land_owner_input_value VARCHAR(MAX)
);
Houd er rekening mee dat uw land_owner_id
in de nieuwe tabel moet van exact hetzelfde type en dezelfde grootte zijn als de ID waarnaar wordt verwezen.
U kunt ook een externe sleutelbeperking maken tussen de land_owner_id
en de ID van de land_owner
tabel om de gegevensintegriteit te waarborgen.
Zodra u uw nieuwe tabel heeft, kunt u ze samen opvragen met een LEFT JOIN
(of een normale JOIN
als je alleen rijen wilt retourneren als het invoerwaarden heeft).
SELECT *
FROM land_owner AS lo
LEFT JOIN land_owner_input AS loi
ON loi.land_owner_id = lo.land_owner_id