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

    query per contare elementi di una tabella (MYSQL)

    Ciao
    Ho una tabella come questa
    http://ilquadernodimike.altervista.o...ht/table_1.jpg

    Questa tabella viene alimentata:
    dalle prenotazioni fatte dagli utenti usando un proprio modulo, che, oltre che aggiornare una propria tabella, aggiorna anche questa inserendo alcuni valori e l'ID prelevato con '$id_velox = mysql_insert_id();'
    o dalle prenotazioni fatte telefonicamente, quindi da un modulo usato dai soli responsabili del sito

    La discriminante tra i due inserimenti è la colonna 'id_velox' che viene scritta solo dal form degli utenti.
    Quel che non riesco a fare è creare delle query che rispondano a queste domande:
    dammi nome e cognome e quante volte ogni utente ha fatto una prenotazione da form
    http://ilquadernodimike.altervista.o...ht/table_3.jpg

    dammi nome e cognome e quante volte ogni utente ha fatto una prenotazione telefonica
    http://ilquadernodimike.altervista.o...ht/table_2.jpg

    dammi il riepilogo delle prenotazioni fatte tramite form e tramite telefono
    http://ilquadernodimike.altervista.o...ht/table_4.jpg

    Qualcuno potrebbe aiutarmi?

    Grazie per la collaborazione

  2. #2
    Ciao,
    in ciascuno dei tre casi, l'azione di prenotazione dovrebbe essere indicata da un valore in un campo della tabella. Ad esempio: l'utente che ha fatto una prenotazione da form, io penso che ci dovrebbe essere un campo nel record che indica che quell'utente ha prenotato da form. Il campo potrebbe essere valorizzato semplicemente da un apposito checkbox che scrive su un campo il valore F (sta per form), da segnare al momento dell'inserimento, e questa soluzione potrebbe risolverti il problema in quanto basterebbe scriverti una select mettendo nella where nome_campo = 'F' in questo modo filtrerai solo per gli utenti prenotati da form. La stessa soluzione la potresti adottare al momento della prenotazione telefonica, facendo in modo che nel campo scriva il valore T (sta per telefonica) e metterai nella condizione where nome_campo = 'T' in questo modo filtrerai solo per gli utenti prenotati telefonicamente.
    Però per fare questo dovresti modificare l'applicazione in php e mettere un menu a tendina che ti permette di selezionare se la prenotazione è stata fatta via telefono o via form.

    La select dovrebbe essere simile a questa:
    codice:
    select nome, cognome, campo_x count(*)
    from nome_tabella
    where campo_x = 'F'
    Ora come ora, mi sembra di capire che c'è un id unico che non individua chi prenota in modalità differenti. In questo caso non puoi sapere chi prenota da form o chi telefonicamente.

    ciao

  3. #3
    Ciao azocomposto
    ti ringrazio per la risposta. Senz'altro è illuminante perchè io continuavo a voler contare il nome ed il cognome e non sapevo come fare. Contando il campo discriminante il codice mi si semplifica di molto.
    Ora come ora, mi sembra di capire che c'è un id unico che non individua chi prenota in modalità differenti. In questo caso non puoi sapere chi prenota da form o chi telefonicamente.
    In realtà nella tabella in esame c'è un campo che individua chi prenota da form ed è "id_velox" che in questa tabella non rappresenta l'ID unico proprio della tabella, ma l'ID della tabella che registra il form come si può vedere in questa immagine
    http://ilquadernodimike.altervista.o...ht/table_1.jpg
    (Mi spiace ma non riesco a mettere l'immagine nel post...debbo contentarmi del link all'immagine)
    Sarà stata una mia superficialità, ma al momento della progettazione del lavoro e, quindi delle tabelle, a mettere nella tabella in esame un campo con un valore fisso ('F'). Aggiungerlo ora significherebbe dover rifare anche tutta la parte della prenotazione tramite modulo.

    Perciò mi permetto di chiedere se non è possibile far lavorare le query usando i valori presenti nel campo "id_velox".
    Quindi non posso usare la query che mi hai suggerito o, quanto meno, la si dovrebbe modificare
    cercando nel campo la presenza di un valore qualsiasi o l'assenza di valori.

    Grazie ancora

  4. #4
    ciao, quindi mi sembra di capire che chi prenota da form possiede il campo id_velox valorizzato?
    Dall'immagine che hai allegato, vedo che il campo id_velox in alcuni casi è valorizzato, mantre in altri è nullo.
    Se questo è vero puoi differenziare le due modalità di prenotazione semplicemente mettendo nella condizione where id_velox is null e visualizzerai tutti quelli non prenotati da form; mentre mettendo nella condizione where id_velox is not null visualizzerai solo i record che hanno id_velox valorizzato e che quindi sono prenotazioni fatta da form.

    Sarà stata una mia superficialità, ma al momento della progettazione del lavoro e, quindi delle tabelle, a mettere nella tabella in esame un campo con un valore fisso ('F'). Aggiungerlo ora significherebbe dover rifare anche tutta la parte della prenotazione tramite modulo.
    non devi assolutamente rifare tutto il modulo della prenotazione. Si tratta solo di effettuare un alter table per aggiungere due campi alla tabella del db e poi devi inserire nella maschera del modulo il menu a tendina e nel codice php devi dirgli che il valore di quel campo lo deve inserire nel nuovo campo della tabella. E' semplice..

    ciao

  5. #5
    Ciao
    Intanto grazie per i suggerimenti che ho sin qui avuto.
    Ci ho messo un po' di tempo per rispondere perchè questi giorni sono diventato pazzo nel provare e modificare le query suggerite.
    Solo stasera sono giunto finalmente alla soluzione (spero)
    queste le query che ho usato:
    Codice PHP:
    <?php
    $Query 
    "SELECT Cliente_nome, Cliente_cognome, COUNT(id) AS Tot FROM ".$table." WHERE id_velox > 0 GROUP BY Cliente_nome, Cliente_cognome ORDER BY Tot DESC";
    ?>
    che mi da questa tabella
    http://ilquadernodimike.altervista.o...ht/table_3.jpg
    Codice PHP:
    <?php
    $Query 
    "SELECT Cliente_nome, Cliente_cognome, COUNT(id) AS Tot FROM ".$table." WHERE id_velox < 1 GROUP BY Cliente_nome, Cliente_cognome ORDER BY Tot DESC";
    ?>
    per ottenere questo risultato
    http://ilquadernodimike.altervista.o...ht/table_2.jpg
    Ho usato il WHERE id_velox > 0 e WHERE id_velox < 1 perchè coi NULL non sono riuscito a gestire bene il risultato.

    Ora rimane da risolvere l'ultimo problema visivile in questa immagine
    http://ilquadernodimike.altervista.o...ht/table_4.jpg


    é un discorso fattibile o debbo rinunciare a questa visualizzazione?
    Come il solito grazie anticipate per l'interessamento.


  6. #6
    ciao,
    da questo che scrivi:
    Ora rimane da risolvere l'ultimo problema visivile in questa immagine http://ilquadernodimike.altervista.o...ht/table_4.jpg
    non riesco a capire cosa vuoi fare...spiegati meglio

  7. #7
    ciao azocomposto
    le prime 2 query mi mostrano in 2 tabelle differenti le prenotazioni effettuale tramite modulo e quelle effettuate telefonicamente.

    Per completezza vorrei poter mostrare in una terza tabella un riepilogo delle 2 tabelle in questo modo:
    Prenotazioni tramite modulo: (Prima query)
    codice:
    nome                      |prenotazioni
    nome1 cognome1	           |5
    nome2 cognome2	           |4
    Prenotazioni telefoniche: (Seconda query)
    codice:
    nome                      |prenotazioni
    nome3 cognome3            |6
    nome4 cognome4            |4
    nome1 cognome1            |4
    nome5 cognome5            |3
    La terza tabella dovrebbe mostrare il riepilogo delle prime 2: (E' quella che mi manca)
    Riepilogo
    codice:
    nome                      |modulo        |telefono
    nome1 cognome1	          |5	           |
    nome1 cognome1		  |                |4
    nome2 cognome2	          |4	           |
    nome3 cognome3	          |                |6
    nome4 cognome4	          |                |4
    nome5 cognome5	          |                |3
    Spero che ora sia più chiaro

    e grazie

  8. #8
    ciao, si ora sei stato chiaro
    dovresti utilizzare gli alias. Mi spiego meglio: in questo caso devi mettere in join la stessa tabella assegnandogli due alias differenti in modo da metterla in join con un unica tabella che contiene i due campi della tabella con gli alias:

    codice:
    select modulo.totali, prenotazioni.totali 
    from tabella1 modulo, tabella2 prenotazioni, tabella3, tabella4 
    where modulo.id_velox = nome_campo 
    and prenotazioni.id_velox = nome_campo
    ciao

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