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