Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quand utiliser des valeurs séparées par des virgules dans une colonne DB ?

Vous connaissez déjà la réponse.

Tout d'abord, votre code PHP n'est même pas près de fonctionner car il ne fonctionne que si l'utilisateur 2 n'a qu'une seule valeur dans LookingFor ou Drugs. Si l'une de ces colonnes contient plusieurs valeurs séparées par des virgules, IN ne fonctionnera pas même si ces valeurs sont exactement dans le même ordre que les valeurs de l'utilisateur 1. Qu'attendez-vous de IN si le côté droit a une ou plusieurs virgules ?

Il n'est donc pas "facile" de faire ce que l'on veut en PHP. C'est en fait assez pénible et impliquerait de diviser les champs de l'utilisateur 2 en valeurs uniques, d'écrire du SQL dynamique avec de nombreux OU pour effectuer la comparaison, puis d'effectuer une requête extrêmement inefficace pour obtenir les résultats.

De plus, le fait que vous ayez même besoin d'écrire du code PHP répondre à une question aussi simple sur l'intersection de deux ensembles signifie que votre conception est gravement défectueuse. C'est exactement le genre de problème (algèbre relationnelle) que SQL existe pour résoudre. Une conception correcte vous permet de résoudre le problème dans la base de données puis implémentez simplement une couche de présentation en PHP ou une autre technologie.

Faites-le correctement et vous aurez beaucoup plus de facilité.