Visualizzazione dei risultati da 1 a 10 su 10

Discussione: formulazione query

  1. #1

    formulazione query

    Salve a tutti, ho un problemino che non riesco a risolvere spero quindi nel vostro aiuto


    il mio db è così composto

    ID NOME MACCHINA MODELLO DATA
    1 luca ferrari F40 2 aprile 09
    2 luca ferrari F40 10 aprile 09
    3 luca fiat punto 16 aprile 09
    4 luca fiat panda 19 aprile 09
    5 luca Opel Astra 3 maggio 09
    5 antonio ferrari F 40 3 aprile 09



    L'utente X tramite un form deve inserire il nome e la data e deve ottenere (stando all'esempio di sopra (ANTONIO E APRILE)

    ferrari f40 = 2
    fiat punto = 1
    fiat panda = 1

    Chiaramente nei campi può esserci qualsiesi valore. Come posso risolvere?

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select macchina,count(macchina) as quanti
    from tabella
    where nome = 'luca'
    group by macchina

  3. #3
    scusa, sbaglio o ma il tuo suggerimento non prende in considerazione la data?

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da liberdoit
    scusa, sbaglio o ma il tuo suggerimento non prende in considerazione la data?
    Per poter gestire le date devi avere un campo della tabella di tipo date (quindi nel formato aaaa-mm-gg). A quel punto puoi estrapolare il mese tramite la funzione month() di mysql.

  5. #5
    Allora ho provato quanto suggeritomi e funziona in parte, dunque, per mia comodità ho strutturato il db con un campo data di tipo text di modo che inserendo la data nel formato gg-mese-anno io possa successivamente cercare all'interno della stringa il mese senza considerare ne giorno ne anno. Sicuramente ci saranno altri metodi magari più efficaci ma non essendo io un esperto ho optato per la prima soluzione che ho trovato.

    ora tornando all'esempio di prima ho fatto il form dove bisogna inserire i due valori (venditore , data), poi ho fatto questo
    Codice PHP:
    $db mysql_connect($db_host$db_user$db_password);

    if (
    $db == FALSE)
      die (
    "Errore nella connessione. Verificare i parametri nel file config.inc.php");

    mysql_select_db($db_name$db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");



    $venditore $_POST['chiave'];
    $data $_POST['chiave1'];

    $query =    "SELECT venditore,marca, tipo, maniche,data, count(tipo) as quanti FROM `prodotti` WHERE venditore = '$venditore'  AND data LIKE '%$data%' group by tipo ";

      
    $result mysql_query($query$db);
      while (
    $row mysql_fetch_array($result))
    {
        echo 
    "$row[venditore] 
    "
    ;
        echo 
    "$row[marca] 
    "
    ;
        echo 
    "$row[tipo] 
    "
    ;
        echo 
    "$row[maniche] 
    "
    ;
        echo 
    "$row[data] 
    "
    ;
        } 
    Il problema è che se $data = Aprile (nella tabella le date sono del tipo 12 Aprile 2009)
    ottengo:

    venditore marca tipo maniche data quanti

    mveglia lacoste camicia lunghe 15 Gennaio 2009 8
    mveglia lacoste giubbino corte 16 Novembre 2008 10
    mveglia lacoste maglia corte 16 Novembre 2008 8
    mveglia lacoste polo lunghe 19 Marzo 2010 8
    mveglia lacoste tshirt corte 16 Novembre 2008 10

    Mentre io vorrei fossero stampati solo i dati relativa a $data

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ti consiglio di memorizzare la data nel formato che ti ho suggerito, quindi aaaa-mm-gg.

    Se dici di dover fare una ricerca solo in base al mese a prescindere dall'anno, una volta memorizzate le date come si deve, ti basterà aggiungere come criterio di ricerca nella query

    where month(campo_data) = 4

  7. #7
    Anzitutto grazie per l'attenzione. Accetterei volentieri il consiglio ma ormai ho quasi ultimato il progetto e mi stuferebbe dover rimettere mano a script già funzionanti e collaudati. A questo punto potrei risolvere il problema se la query ricercasse la presenza della stringa chiave (aprile) all'interno del campo di tipo stringa data (16 aprile 2008). Credevo si facesse così, ma a quanto pare mi sfugge qualcosa perchè la query qui sotto stampa anche i dati relativi ad altri mesi.

    Codice PHP:
     $query =    "SELECT venditore,marca, tipo, maniche,data, count(tipo) as quanti FROM `prodotti` WHERE venditore = '$venditore'  AND data LIKE '%$data%' group by tipo "
    come posso risolvere

  8. #8
    Ok ho risolto, la query giusta è questa:



    Codice PHP:
    $query =    "SELECT venditore,marca, tipo, categoria, maniche,data, count(tipo) as venduti FROM `prodotti` WHERE venditore = '$venditore' AND data LIKE '%$data%' group by tipo "
    Un'ultima domanda poi giuro non rompo più. Se ho un campo data (16 Aprile 2009) e volessi stampare solo una parte di questo record (es: Aprile 2009) come faccio?

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select *,trim(substring(data from locate(' ',data))) as mese_anno from tabella
    ma non è una cosa molto bella a vedersi.

  10. #10
    perfetto, proprio quello che mi serviva. Non sarà bella da vedere ma è alquanto efficace. Grazie mille

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.