Se você se encontrar em uma situação em que começa a ter
column1
, column2
na mesa - é provável que seu design esteja com falhas e, em vez disso, você deve criar uma tabela separada - onde cada columnX
recebe uma linha própria. É (quase) sempre melhor ter uma tabela separada se você tiver várias colunas repetidas na mesma tabela. Dessa forma, você evita armazenar valores separados por vírgulas em colunas, evita quebrar seu código/consultas se de repente precisar introduzir outro valor
column{X+1}
- e, em vez disso, pode ter quantos valores de entrada você precisar. Para você, isso seria algo como uma nova tabela chamada
land_owner_input
, onde você tem o valor (que você colocaria em columnX
) e uma referência à linha em land_owner
que o valor pertence. O padrão de design típico seria algo assim.
CREATE TABLE land_owner_input (
land_owner_input_id INT(11) AUTO_INCREMENT
land_owner_id INT(11),
land_owner_input_value VARCHAR(MAX)
);
Lembre-se de que seu
land_owner_id
na nova tabela deve ser exatamente do mesmo tipo e tamanho que o ID que faz referência. Você também pode criar uma restrição de chave estrangeira entre o
land_owner_id
e o ID do land_owner
tabela para garantir a integridade dos dados. Depois de ter sua nova tabela, você pode consultá-los juntos usando um
LEFT JOIN
(ou um JOIN
normal se você quiser apenas retornar linhas se tiver valores de entrada). SELECT *
FROM land_owner AS lo
LEFT JOIN land_owner_input AS loi
ON loi.land_owner_id = lo.land_owner_id