[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