sql >> Databáze >  >> RDS >> Mysql

Kdy použít hodnoty oddělené čárkami ve sloupci DB?

Odpověď už znáte.

Za prvé, váš kód PHP ani zdaleka nefunguje, protože funguje pouze tehdy, pokud má uživatel 2 pouze jednu hodnotu v LookingFor nebo Drugs. Pokud některý z těchto sloupců obsahuje více hodnot oddělených čárkou, IN nebude fungovat i když tyto hodnoty jsou přesně ve stejném pořadí jako hodnoty uživatele 1. Co očekáváte, že IN udělá, pokud pravá strana má jednu nebo více čárek?

Proto není „snadné“ dělat v PHP, co chcete. Je to vlastně docela trápení a vyžadovalo by to rozdělení polí uživatele 2 do jednotlivých hodnot, psaní dynamického SQL s mnoha OR, aby bylo možné provést srovnání, a pak provedení extrémně neefektivního dotazu pro získání výsledků.

Dále fakt, že je třeba i psát PHP kód Zodpovědět tak relativně jednoduchou otázku o průniku dvou množin znamená, že váš návrh je hodně chybný. Toto je přesně ten druh problému (relační algebra), k jejichž řešení existuje SQL. Správný návrh umožňuje vyřešit problém v databázi a pak jednoduše implementujte prezentační vrstvu nahoře v PHP nebo nějaké jiné technologii.

Udělejte to správně a budete to mít mnohem jednodušší.



  1. Ukládání konkrétních hodnot data/času pro uživatele v různých časových pásmech

  2. Spring Boot JPA MySQL:Nepodařilo se určit vhodnou třídu ovladače

  3. Hibernace časové razítko s časovým pásmem

  4. Časový limit pro metodu OracleDataReader.Read