PDA

Visualizza versione completa : Mysql aiuto per query select



Asterix
26-08-12, 16: 27
Ciao ragazzi

vediamo se qualcuno di voi riesce a darmi una mano.

Io ho un campo mod_productid dove posso inserire più valori separati da una virgola es. prod1, prodpippo

io avrei la necessita di fare un select del tipo

$qry = "SELECT threadid FROM ".TABLE_PREFIX."modsys_settings WHERE mod_productid = '$pid'";

questa query funziona se io nel campo mod_productid metto un singolo valore

il $pid viene passato tramite un indirizzo web es. http://forum.dev/misc.php?do=productcheck&pid=prod1

ho provato con il like '%$pid%' ma mi estrae anche altri valori che contengo prod1 e questo non va bene, mentre con il solo like '$pid' non mi estrae nulla.

Qualcuno ha qualche consiglio su come agire.

:thx

:bai

MarcoStraf
06-09-12, 23: 23
...

questa query funziona se io nel campo mod_productid metto un singolo valore

il $pid viene passato tramite un indirizzo web es. http://forum.dev/misc.php?do=productcheck&pid=prod1

ho provato con il like '%$pid%' ma mi estrae anche altri valori che contengo prod1 e questo non va bene, mentre con il solo like '$pid' non mi estrae nulla.
...

Scusa ma non capisco
La prima query funziona solo se hai un valore singolo, mentre la seconda funziona per tutti i valori che contengono quel pattern, mi sembra chiaro. Dove sta il problema? Dipende tu quello che vuoi fare, se vuoi che il campo abbia SOLO quel valore, usi il "=", se vuoi ANCHE quel valore usi il "LIKE" (usando il %)
Puoi farmi qualche esempio?

PS usare un campo con multipli valori separati tra loro non e' proprio una buona idea, va contro l'idea di base di un relational database (ma questo dovresti saperlo gia')

Asterix
10-09-12, 07: 38
Ciao Marco

scusami per il ritardo ma ho visto solo oggi la tua risposta :lol:

il mio productid lato server puo' avere più valori mentre lato client no solo uno che lo passo nel link.

es.

prodotto 1 con i valori id: pippo, pippo242
prodotto 2 con i valori id: granpippo

se io voglio aggiornare pippo242 e utilizzo il like con pippo mi seleziona anche il prodotto 2 e questo a me non va bene in quanto l'aggiornamento automatico mi cancella anche il prodotto 1, io vorrei capire se c'è qualche cosa che mi preleva ad esempio solo pippo242 dal record o solo granpippo.

Questa funzione mi serve per i miei plugin di vbulletin, su vb.org c'è questa possibilità quindi è fattibile ma sull'addon che ho trovato io per la gestione degli addon no o meglio c'è per un solo valore.

:bai

MarcoStraf
10-09-12, 20: 49
ok, ho capito che hai questi due record:

prodotto 1 con i valori id: pippo, pippo242
prodotto 2 con i valori id: granpippo

dopo l'aggiornamento, mi fai un esempio di come dovrebbero essere?

Ma mi sa che non sia facile. Se usi "like %pippo%", ovvio che ti seleziona tutti i record, anche pippo242 e granpippo.
Scusa sai, non sono un esperto di "campi multipli", da noi sono un "no, no"

Asterix
11-09-12, 07: 24
Mi sono spiegato male

nel mio server ho questo tracciato record:
titolo plugin | versione | id controllo versione

prodotto secondo post ads | versione 1.5 | ct_ads_secondo, ct_ads_secondo_4200
prodotto solved thread | versione 2.5 | ct_solved_4200

ora io faccio un aggiornamento del plugin e nello script passo il controllo di versione

io ho utenti che hanno installato il plugin con il controllo di versione ct_ads_secondo e versione 0.9 mentre altri utenti hanno installato il plugin con controllo versone ct_ads_secondo_4200 e versione 1.4

se il controllo di versione è ct_ads_secondo gli dico di disinstallare il plugin presente e reinstallare quello nuovo aggiornando alla versione 1.5
se il controllo di versione è ct_ads_secondo_4200 non deve disinstallare ma solo aggiornare alla versione 1.5

il prodotto è il medesimo e non devo creare un nuovo record

come vedi il like non puo' andar bene in quanto prenderei tutti e due i prodotti
forse ora mi sono spiegato meglio almeno lo spero

:bai