Pagina 3 di 3 primaprima 1 2 3
Visualizzazione dei risultati da 21 a 28 su 28
  1. #21
    Mi tocca riportare up questa discussione

    Originariamente inviato da Petro_suse91
    piero.mac se faccio
    ALTER TABLE arts ORDER BY catid DESC
    ottengo il risultato voluto
    Purtroppo non è sempre così... sembra che l'ORDER BY in ALTER TABLE non funzioni come dovrebbe per valori molto vicini (un secondo di differenza in un campo int(11) che contiene un timestamp)

    Per cui un valore nel campo 'data' come
    1140367824 viene prima di
    1140367825

    mentre (dato che ho ordinato 'BY data DESC') dovrebbe essere il contrario, o no???
    La tabella è InnoDB.
    E' forse un bug di mysql? Non credo... sarà più un bug nelle mie conoscenze

    Aiutatemi, perfavore... non so come uscirne!

  2. #22
    Ti diro' sinceramente che quando devo fare una query ed ho difficolta' ad avere i dati attesi mi pongo sempre la domanda se la struttura del db/tabelle e' appropriata ai miei bisogni.

    Detto questo e in considerazione che hai detto che ci sono numerossime query, che non ha grande importanza che ci sia assolutamente l'ultimo risultato.... proverei a pensare ad una pagina html statica, formata dalla query una tantum ogni tot tempo che tu ritieni opportuno da includere al posto delle query utente.

    Usando una tabella temporanea e occhio che dire usare una tabella temporanea non faresti niente di eccessivo come invece qualcuno crede, ma non faresti altro che dividere in step fisici quello che mysql farebbe gia' di suo in modo silente, non dovresti avere problemi.

    Una nota per il date/timestamp... se fai una INSERT/UPDATE che inserisce/modifica piu' record e in questi record c'e' una funzione che immette data od orario, i dati data/ora inseriti sono tutti uguali, perche' di chiamate all'ora di sistema ne viene fatta solo una, valida per tutta la query.

    Per quanto riguarda il tuo problema di ordinamento tieni presente che tu ordini per id e non per timestamp..... quindi se bug fosse sarebbe sull'ordinamento degli id e non sul contenuto della tupla.


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

  3. #23

    Query definitiva

    Ho risolto (grazie a un commento, il n°2) il problema dell'ordinamento: con le tabelle temporanee (e tre query in più) ora ho la certezza che l'ordinamento sia sempre perfetto:

    Codice PHP:
    // $a e $b sono le due grosse SELECT, con un paio di AS in più, che prima univo tramite UNION
    mysql_query("CREATE TEMPORARY TABLE t0 $a"$db);
    mysql_query("INSERT INTO t0 $b"$db);
    mysql_query("CREATE TEMPORARY TABLE t2 SELECT * FROM t0 ORDER BY date DESC"$db);
    mysql_query("SELECT * FROM t2 GROUP BY catid ORDER BY date DESC"$db); 
    Bello ed efficace

    Ora che la query è a posto, sorge un dubbio:
    se due utenti contemporaneamente accedono allo script e creano tabelle temporanee che hanno lo stesso nome, queste "vanno in conflitto" oppure ogni utente ha "la sua zona dove creare le tabelle temp"? Devo dare nomi casuali (random o meglio =sid) alle tabelle temporanee?

  4. #24
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120

    Re: Query definitiva

    Originariamente inviato da Petro_suse91

    se due utenti contemporaneamente accedono allo script e creano tabelle temporanee che hanno lo stesso nome, queste "vanno in conflitto" oppure ogni utente ha "la sua zona dove creare le tabelle temp"? Devo dare nomi casuali (random o meglio =sid) alle tabelle temporanee?
    Non preoccuparti, nessun conflitto.

    Io comunque avrei ottimizzato la query iniziale con l'uso di MAX()

  5. #25

    Re: Re: Query definitiva

    Originariamente inviato da luca200
    Non preoccuparti, nessun conflitto.
    Ah, ci pensa già MySQL a distinguere gli utenti e creare per ognuno la tabella temporanea? Perfetto!
    Originariamente inviato da luca200
    Io comunque avrei ottimizzato la query iniziale con l'uso di MAX()
    Uhm, ma come l'avresti strutturata?
    Così funziona perfettamente e in più ho la tabella temp a disposizione, senza dover rifare la mega query, per le select che mi servono in altre pagine.

  6. #26
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    in altre pagine?
    mi sa che te lo scordi...

    la tabella temporanea esiste per il tempo della connessione

  7. #27
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120

    Re: Re: Re: Query definitiva

    Originariamente inviato da Petro_suse91
    Uhm, ma come l'avresti strutturata?
    Premetto che non l'ho studiata a fondo, ma bastava usare la funzione MAX() per quei campi di cui ti serviva il valore più alto su ogni raggruppamento

  8. #28
    Originariamente inviato da luca200
    in altre pagine?
    mi sa che te lo scordi...

    la tabella temporanea esiste per il tempo della connessione
    Si, mi son spiegato male... il fatto è che ho un sistema a template che funziona tramite include(), ergo mi basta aggiungere la query che crea la tabella temporanea nell'header (SE serve) per averla a disposizione nelle varie pagine che vengono caricate nel template

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.