[bglug] Mysql query
Alberto Bonacina
bonacina.alberto@gmail.com
Lun 7 Nov 2016 09:31:18 CET
Il 5 novembre 2016 08:07, Roberto Santini
<roberto.santini89@gmail.com> ha scritto:
> Ora, ho un database con le seguenti tabelle:
> - user: id, name
> - spec: id, label
> - spec_values: id, id_user,id_spec, value.
Volendo potresti aggiungere alla tabella user un campo che ti dice
quali sono le spec che l'utente ha abilitato/creato (di cui ha un
valore nella tabella spec_values), questo potrebbe essere fatto con
una lista di id separati da virgola oppure con un campo testuale e poi
salvare un array con il serialize/unserialize di PHP.
Perchè farlo? In questo modo puoi prima cercare gli utenti che hanno
quel/quei valore/i settato/i, indipendentemente dal valore effettivo
dello spec, e poi cercare gli effettivi valori solo tra quelli in cui
ha senso cercare.
Per vedere quali hanno quelle spec nel caso tu abbia utilizzato la
lista di spec_id separati da virgola puoi usare il costrutto
FIND_IN_SET di SQL e usare l'AND in questo modo
SELECT * FROM user WHERE ( FIND_IN_SET (first_spec_id,user.spec_list)
AND .... AND (nth_spec_id,user.spec_list));
Una cosa a cui stare un attimo attenti è quando l'utente aggiorna la
sua lista di spec in quanto si deve andare a modificare la tabella
spec_values ma anche la lista di spec nella tabella user.
--
Bonacina Alberto
Website: www.albertobonacina.com
Maggiori informazioni sulla lista
bglug