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

    [mysql]query per ricerca

    In una tabella ho un campo data, che però per dovute ragioni ho dovuto salvare sottoforma di varchar. Perchè può essere ad esempio così: 25-06-2004###25-06-2004 capite quindi che non può essere salvato sottoforma di data.
    Nella tabella vengono salvati gli accessi ad un sito e se la stessa persona effettua più accessi il campo data viene aggiornato accodando la data dell'accesso come mostrato.

    La query che vorrei fare io è di ordinare i dati secondo la data (essendo varchar posso ordinare come se fossero date?nel senso che il 31-07-2004 deve venire prima del 01-08-2004?)poi, un'altra domanda, se io volessi ordinare solo secondo i primi 10 caratteri, come lo faccio?questo perché se ci sono più accessi prende solo la data del primo per fare l'ordinamento.

    Grazie mille a tutti.
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  2. #2

    Re: [mysql]query per ricerca

    La query che vorrei fare io è di ordinare i dati secondo la data (essendo varchar posso ordinare come se fossero date?nel senso che il 31-07-2004 deve venire prima del 01-08-2004?)
    Prima di fare l'ordinamento non potresti trasformare le stringhe in interi e poi eliminargli i trattini e confrontarle come numeri??? é un idea...non so se possibile...

  3. #3
    grazie dell'idea, potrebbe essere buona se solo avessi idea di come realizzarla...ce la fai a darmi una mano?grasssie

    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  4. #4
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    SELECT *,CAST(CONCAT(SUBSTRING(nome_campo,7,4),'-',SUBSTRING(nome_campo,4,2),'-',SUBSTRING(nome_campo,1,2)) AS DATE) AS data FROM tabella
    ORDER BY data ASC;
    think simple think ringo

  5. #5
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    Se ho ben capito, dopo cento accessi l'utente avrà cento date separate da ### ....???

    Non è molto performante..... :master:
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  6. #6
    Originariamente inviato da marketto
    SELECT *,CAST(CONCAT(SUBSTRING(nome_campo,7,4),'-',SUBSTRING(nome_campo,4,2),'-',SUBSTRING(nome_campo,1,2)) AS DATE) AS data FROM tabella
    ORDER BY data ASC;
    Ti ringrazio, ma non mi funziona, probabilmente è per via della versione di mysql che ancora non mi aggiornano (avessi accesso io lo farei...), la versione è la 3.23.58

    L'errore che mi restituisce è questo:

    You have an error in your SQL syntax near '(CONCAT(SUBSTRING(data,7,4),'-',SUBSTRING(data,4,2),'-',SUBSTRING(data,1,2)) AS ' at line 1
    come query ho usato questa:
    SELECT *,CAST(CONCAT(SUBSTRING(data,7,4),'-',SUBSTRING(data,4,2),'-',SUBSTRING(data,1,2)) AS DATE) AS data FROM tabella ORDER BY data ASC

    se può servire posto il dump della tabella degli accessi:
    codice:
    CREATE TABLE count (
      id bigint(20) NOT NULL auto_increment,
      data varchar(255) NOT NULL default '',
      ip varchar(20) NOT NULL default '',
      numero int(11) NOT NULL default '0',
      PRIMARY KEY  (id)
    ) TYPE=MyISAM;

    Ancora grazie!

    C'è un modo per risolvere o è proprio la versione di mysql?e se è la vesrsione non c'è una query per fare la stessa cosa?
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  7. #7
    Originariamente inviato da kalosjo
    Se ho ben capito, dopo cento accessi l'utente avrà cento date separate da ### ....???

    Non è molto performante..... :master:
    si hai capito bene. Che non sia performante ok, ma non ho trovato altro modo per fare ciò che mi serve.
    In pratica, ho un banner nel sito che rimanda ad un altro sito, e devo salvare in un db ogni volta che qualcuno ci clicca sopra (non penso che l'utente ci clicchi sopra mille e mille volte), è una specie di piccola indagine statistica.

    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  8. #8
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    Si, anche se ci clicca 4 vlte, è poi difficoltoso fare delle statistiche.

    Potevi fare una semplice tabella ausiliaria con solo due campi:

    IDUtente
    Data

    In questo modo ogni click inserisci una data, e le ricerche, con rispettivi ordinamenti, sono più semplici.... :tongue:
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  9. #9

    grazie

    Originariamente inviato da kalosjo
    Si, anche se ci clicca 4 vlte, è poi difficoltoso fare delle statistiche.

    Potevi fare una semplice tabella ausiliaria con solo due campi:

    ...
    proverò a fare come dici

    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  10. #10
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    Originariamente inviato da 13manuel84
    Ti ringrazio, ma non mi funziona, probabilmente è per via della versione di mysql che ancora non mi aggiornano (avessi accesso io lo farei...), la versione è la 3.23.58
    strano, nn mi sembra ci siamo problemi di versioni, cmq prova cosi (ovvero togliendo il casting del campo):

    SELECT *,CONCAT(SUBSTRING(data,7,4),SUBSTRING(data,4,2),S UBSTRING(data,1,2)) AS data
    FROM count
    ORDER BY data ASC;
    think simple think ringo

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 © 2024 vBulletin Solutions, Inc. All rights reserved.