Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [MySQL]Selezionare tot elementi per ogni utente

    Scusate, ma il titolo non lascia capire bene il problema, ma in poche parole è veramente ardua da spiegare, come anche cercare sul forum è dura per questo problema.
    Premetto che la query è molto più complessa di come la sto per spiegare, però mi serve capire come risolvere un problema basico.
    In pratica ho una tabella di annunci, ed una di utenti, ogni utente può mettere uno o più annunci.
    Io devo tirare fuori un tot massimo di annunci per ogni utente, ad esempio facciamo che devo tirare giù tutti gli annunci ma per ogni utente devo tirare fuori un massimo di 40 annunci, non di più, quindi se un utente ha inserito 50 annunci, nell'elenco degli annunci ci devono essere solo i primi (o gli ultimi, è uguale) 40, e tagliare quei 10 in più.
    Avete idea di come fare tutto in una query?

    Grazie in anticipo

  2. #2

  3. #3
    Uhm, il tuo problema è che volevi mostrare solo alcuni record che avessero un numero maggiore di un tot, io invece devo mostrare tutti i primi X record di ogni utente :-\

  4. #4
    Originariamente inviato da darkmavis
    Uhm, il tuo problema è che volevi mostrare solo alcuni record che avessero un numero maggiore di un tot, io invece devo mostrare tutti i primi X record di ogni utente :-\
    Vai di php .... potresti mettere un contatore + una if di controllo nome user nel while

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

  5. #5
    Originariamente inviato da piero.mac
    Vai di php .... potresti mettere un contatore + una if di controllo nome user nel while
    Il problema che la query è bella complessa perchè deve fare non pochi controlli, e preferivo far fare al serve decine o centinaia di query in una botta sola, se riuscivo con una sola era meglio...

  6. #6
    Originariamente inviato da darkmavis
    Il problema che la query è bella complessa perchè deve fare non pochi controlli, e preferivo far fare al serve decine o centinaia di query in una botta sola, se riuscivo con una sola era meglio...
    proprio per questo credo sia meglio agire contando i risultati ottenuti con php senza complicare ulteriormente la query.

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

  7. #7
    Originariamente inviato da piero.mac
    proprio per questo credo sia meglio agire contando i risultati ottenuti con php senza complicare ulteriormente la query.
    Ma una query complessa rimane sempre più leggera come carico del server rispetto a centinaia di query semplici, no?

  8. #8
    Originariamente inviato da darkmavis
    Ma una query complessa rimane sempre più leggera come carico del server rispetto a centinaia di query semplici, no?
    Non so cosa intendi per query semplici o query complesse. A volte il complesso dei comandi per una query puo' essere piu' pesante di tante query semplici. Ma ripeto non conosco il contesto.

    Quello a cui mi riferisco e' che se tu hai un result set ottenuto come ti pare, puoi agire su di esso controllandone il contenuto. Quindi limitare il numero dei record da visualizzare in php invece che in SQL. Ma mi sfugge il "vero" problema. cioe' query complessa contro molte query. Che vuol dire?

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

  9. #9
    Originariamente inviato da piero.mac
    Non so cosa intendi per query semplici o query complesse. A volte il complesso dei comandi per una query puo' essere piu' pesante di tante query semplici. Ma ripeto non conosco il contesto.

    Quello a cui mi riferisco e' che se tu hai un result set ottenuto come ti pare, puoi agire su di esso controllandone il contenuto. Quindi limitare il numero dei record da visualizzare in php invece che in SQL. Ma mi sfugge il "vero" problema. cioe' query complessa contro molte query. Che vuol dire?
    Ti spiego meglio, dalla query tiro fuori un elenco di annunci, ognuno dei quali è associato ad un utente. E fin qui ci siamo e non è niente di strano.
    Quello che devo fare io è che se un utente ha più di 40 annunci (è un esempio), dal 41esimo in poi non li devo mostrare nel risultato con tutti gli annunci.

  10. #10
    Originariamente inviato da darkmavis
    Ti spiego meglio, dalla query tiro fuori un elenco di annunci, ognuno dei quali è associato ad un utente. E fin qui ci siamo e non è niente di strano.
    Quello che devo fare io è che se un utente ha più di 40 annunci (è un esempio), dal 41esimo in poi non li devo mostrare nel risultato con tutti gli annunci.
    appunto. usa il php.... un esempio:

    codice:
    $username = '';
    $max_counter = 40;
    
    la tua query... poi
    
    while ($row = mysql_fetch_assoc($resource))   {
    
         if($username != $row['user'] ) { 
             stampa tutto il record;
             $username = $row['user']; 
             $counter = 1;
             }   elseif($username == $row['user'] AND $counter < $max_counter) {
                    stampa tutto il record;
                    $counter++;
                    }
    }
    gia' cosi' ti dovrebbe stampare solo al max 40 record per utente ed il contatore ripartire ogni volta che cambia il nome dello user. Basta che fornisci il result set ordinato per username.

    salvo errori di sbaglio.....


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

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.