Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    estrarre RANDOM ma SOLO tra quelli con l'ID più alto

    buona sera a tutti,

    posto dopo molti tentativi e ricerche.
    per voi sarà cosa facile, per me assai ardua...

    devo mostrare RANDOM 2 articoli (in base all'item_ID) di determinate categorie (es. A, B, C) presi tra gli ultimi 5 di ciascuna categoria.

    ho provato così, ma nn funziona, pesca solo da una categoria e nn so come limitare il random agli ultimi 5:

    $query="SELECT * FROM items WHERE id = 41 AND 31 AND 21 AND 11 AND 1 ORDER BY RAND() LIMIT 2";

    se qualche anima pia volesse chiarirmi...

    ringrazio sin d'ora...

    dddlv

  2. #2
    SELECT * FROM items WHERE id IN (41,31,21,11,1) ORDER BY RAND() LIMIT 2

    ciao

  3. #3

    perfetto!!

    miii, funziona! ma chi sei?! :-o
    grande, grazie mille!!

  4. #4

    ma, aspetta...

    non gli dice di considerare solo gli ultimi x con l'id più alto.
    o sbaglio?

    ora che ho il db poco popolato, funziona... ma quando sarà più pieno?
    nn vorrei mi prendesse articoli vecchi...
    ancora grazie!

  5. #5
    WHERE id IN (41,31,21,11,1)

    pesca tra quelli descritti da IN()

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6

    no, scusa...

    mi spiego meglio:

    devo mostrare RANDOM 2 articoli (in base all'item_ID) di determinate categorie (es. A, B, C) presi tra gli ultimi 5 di ciascuna categoria.

    nella stringa:

    SELECT * FROM items WHERE id IN (41,31,21,11,1) ORDER BY RAND() LIMIT 2

    dove viene detto che deve mischiare gli ultimi 5 di ogni categoria?

    tks again!

  7. #7

    Re: no, scusa...

    Originariamente inviato da don_diego_2007
    mi spiego meglio:

    devo mostrare RANDOM 2 articoli (in base all'item_ID) di determinate categorie (es. A, B, C) presi tra gli ultimi 5 di ciascuna categoria.

    nella stringa:

    SELECT * FROM items WHERE id IN (41,31,21,11,1) ORDER BY RAND() LIMIT 2

    dove viene detto che deve mischiare gli ultimi 5 di ogni categoria?

    tks again!
    non viene detto da nessuna parte di mischiare gli ultimi 5, ma viene detto di mischiare quelli che trova nella funzione IN()

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8

    e come glielo si chiede?

    e come glielo si chiede?

    quando il db crescerà finirà per mostrare random degli articoli vecchi...

  9. #9

    Re: e come glielo si chiede?

    Originariamente inviato da don_diego_2007
    e come glielo si chiede?

    quando il db crescerà finirà per mostrare random degli articoli vecchi...
    rand() e' incompatibile con un ordinamento. Quindi puoi estrarre gli ultimi 5 per ogni categoria con ORDER BY id DESC limit 0,5, raccogli i record in un array e poi randomizzi l'ordine dei record raccolti con shuffle() e stampi i primi due.

    http://www.php.net/manual/it/function.shuffle.php

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    se hai una versione recente di mysql puoi usare le query annidate. trovi gli ultimi 5 di una categoria e sui dati estratti esegui una query che ne estragga due a caso.

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.