Pokud se ocitnete v situaci, kdy začnete mít column1 , column2 na stole – je pravděpodobné, že váš návrh začíná být chybný, a měli byste místo toho vytvořit samostatnou tabulku – kde každý columnX dostane vlastní řadu. Je (téměř) vždy lepší mít samostatnou tabulku, pokud zjistíte, že máte v jedné tabulce více opakujících se sloupců.
Tímto způsobem se vyhnete ukládání hodnot oddělených čárkami ve sloupcích, vyhnete se porušení kódu/dotazů, pokud náhle budete muset zavést jinou hodnotu column{X+1} - a místo toho může mít tolik nebo málo vstupních hodnot, kolik potřebujete.
Pro vás by to bylo něco jako nová tabulka s názvem land_owner_input , kde máte hodnotu (kterou byste vložili do columnX ) a odkaz na řádek v land_owner že hodnota patří.
Typický designový vzor by byl něco takového.
CREATE TABLE land_owner_input (
land_owner_input_id INT(11) AUTO_INCREMENT
land_owner_id INT(11),
land_owner_input_value VARCHAR(MAX)
);
Mějte na paměti, že vaše land_owner_id v nové tabulce by měl být přesně stejného typu a velikosti jako ID, na které se odkazuje.
Můžete také vytvořit omezení cizího klíče mezi land_owner_id a ID land_owner tabulky, aby byla zajištěna integrita dat.
Jakmile budete mít svou novou tabulku, můžete se na ně společně dotazovat pomocí LEFT JOIN (nebo normální JOIN pokud chcete vrátit řádky pouze v případě, že má vstupní hodnoty).
SELECT *
FROM land_owner AS lo
LEFT JOIN land_owner_input AS loi
ON loi.land_owner_id = lo.land_owner_id