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

Hvornår skal man bruge kommaseparerede værdier i en DB-kolonne?

Du kender allerede svaret.

For det første er din PHP-kode ikke engang tæt på at virke, fordi den kun virker, hvis bruger 2 kun har en enkelt værdi i LookingFor eller Drugs. Hvis en af ​​disse kolonner indeholder flere kommaseparerede værdier, virker IN ikke selvom disse værdier er i nøjagtig samme rækkefølge som bruger 1's værdier. Hvad forventer du, at IN gør, hvis højre side har et eller flere kommaer?

Derfor er det ikke "nemt" at gøre hvad du vil i PHP. Det er faktisk ret besværligt og ville involvere at opdele bruger 2's felter i enkelte værdier, skrive dynamisk SQL med mange OR'er for at udføre sammenligningen og derefter lave en ekstremt ineffektiv forespørgsel for at få resultaterne.

Desuden det faktum, at du selv skal skrive PHP-kode at besvare et så relativt simpelt spørgsmål om skæringspunktet mellem to sæt betyder, at dit design er slemt defekt. Dette er præcis den slags problem (relationel algebra), som SQL eksisterer for at løse. Et korrekt design giver dig mulighed for at løse problemet i databasen og implementer derefter blot et præsentationslag ovenpå i PHP eller en anden teknologi.

Gør det korrekt, og du vil have en meget lettere tid.



  1. Hvordan ændres datostil i PostgreSQL?

  2. PHP Mysql PDO antallet af bundne variabler svarer ikke til antallet af tokens

  3. Sådan uploader du billedsti og navn til databasen - Codeigniter

  4. Hvornår har Postgres kolonne- eller tabelnavne brug for anførselstegn, og hvornår behøver de ikke?