Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Quando usar valores separados por vírgula em uma coluna de banco de dados?


Você já sabe a resposta.

Primeiro, seu código PHP não está nem perto de funcionar porque só funciona se o usuário 2 tiver apenas um único valor em LookingFor ou Drugs. Se qualquer uma dessas colunas contiver vários valores separados por vírgulas, IN não funcionará mesmo que esses valores estão exatamente na mesma ordem que os valores do Usuário 1. O que você espera que o IN faça se o lado direito tem uma ou mais vírgulas?

Portanto, não é "fácil" fazer o que você quer em PHP. Na verdade, é bastante trabalhoso e envolveria dividir os campos do usuário 2 em valores únicos, escrever SQL dinâmico com muitos ORs para fazer a comparação e, em seguida, fazer uma consulta extremamente ineficiente para obter os resultados.

Além disso, o fato de você precisar escrever código PHP responder a uma pergunta relativamente simples sobre a interseção de dois conjuntos significa que seu projeto é muito falho. Este é exatamente o tipo de problema (álgebra relacional) que o SQL existe para resolver. Um design correto permite que você resolva o problema no banco de dados e então simplesmente implemente uma camada de apresentação em PHP ou alguma outra tecnologia.

Faça isso corretamente e você terá muito mais facilidade.