Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    9

    [SQL] inserire un random pseudo casuale

    Salve, spero di postare nella sezione corretta. provato a cercare in altre discussioni ma non sono riuscito a trovare una risposta simile. trovo come ordinare a caso delle select. provo ad esporvi il problema.

    utilizzo postgres

    ho una tabella clienti, con i campi:
    - codcli
    - nome
    ecc..

    dovrei inserire un valore pseudo casuale basato sul codcli, che sarebbe il codice cliente ma non riesco a farlo.

    se creo il campo random e provo ad usare l'update in questo modo

    update clienti
    set random = random(codcli)

    mi dice: HINT: No function matches the given name and argument types. You might need to add explicit type casts.

    sto provando ad usare un cast ma non credo di usarlo correttamente... esempio:

    update clienti
    set random = random(cast (codcli) as integer)

    ma mi da sempre lo stesso errore. ho provato a fare una cosa del genere ma è sempre uguale:

    update clienti as c
    set random = random(select cast c1.codcli as integer from clienti c1 where c1.codcli = c.codcli)

    immagino di sbagliare il cast ma non ne sono sicuro

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    9
    niente eh...

  3. #3
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    La funzione random su pg non ha nessun parametro.. Su MySQL puoi passargli il seed come argomento, su pg invece no.
    Usa setseed(), o SET SEED.. e poi chiama random().

    Ma forse cio' che stai facendo e' sbagliato. Ti serve solo generare un codice basato sul codcli per evitare serial o collisioni? Magari puoi provare solo a concatenare codcli con una chiave segreta costante e poi criptare la stringa ad esempio in md5. O usare le funzioni uuid-ossp..

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    9
    mah, in realtà dovrei aggiungere una sorta di numero casuale, ma che sia lo stesso se qualcunaltro ripeta l'esperimento...

    nel database ci sono moltissimi clienti, e dovrei analizzarne una parte.
    L'idea era di assegnargli un numero pseudo casuale, ordinarli in base a questa variabile (ad esempio in modo crescente) e prendere i primi mille...

    è un modo per estrarre un campione casuale, solo che se questa cosa viene rifatta da zero da qualcunaltro, e si segue passo passo quello che ho fatto, chiunque riuscirà ad avere gli stessi risultati

  5. #5
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    A questo punto suppongo che non puoi ordinarli per codcli, o nome, o qualsiasi altro campo esistente.
    Io pensavo ti servisse per assegnare a loro un id univoco ma non seriale. Se invece e' per prendere un insieme riproducibile come campione, allora si, va bene il random, impostando prima il seed con setrand come ti dicevo sopra, dai un occhiata alla documentazione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.