Mysql
 sql >> Database >  >> RDS >> Mysql

Quando utilizzare valori separati da virgole in una colonna DB?

Conosci già la risposta.

Prima di tutto, il tuo codice PHP non è nemmeno vicino a funzionare perché funziona solo se l'utente 2 ha un solo valore in LookingFor o Drugs. Se una di queste colonne contiene più valori separati da virgole, IN non funzionerà anche se quei valori sono esattamente nello stesso ordine dei valori dell'utente 1. Cosa si aspetta da IN se il lato destro contiene una o più virgole?

Pertanto, non è "facile" fare ciò che vuoi in PHP. In realtà è piuttosto una seccatura e comporterebbe la suddivisione dei campi dell'utente 2 in valori singoli, la scrittura di SQL dinamico con molti OR per eseguire il confronto e quindi l'esecuzione di una query estremamente inefficiente per ottenere i risultati.

Inoltre, il fatto che tu devi persino scrivere codice PHP rispondere a una domanda così semplice sull'intersezione di due insiemi significa che il tuo design è gravemente difettoso. Questo è esattamente il tipo di problema (algebra relazionale) che SQL esiste per risolvere. Una corretta progettazione consente di risolvere il problema nel database e quindi implementa semplicemente un livello di presentazione in cima in PHP o qualche altra tecnologia.

Fallo correttamente e ti sarà molto più facile.