Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di gnola
    Registrato dal
    Jun 2001
    Messaggi
    603

    Estrarre record in base ad un campo comune..

    Ciao a tutti,
    non sono una vera programmatice ma a volte tocca anche a me cimentarmi in questo campo pieno di insidie e problemi
    Quindi eccomi a chiedere a voi esperti un consiglio su una select!!

    Ho una pagina che raccoglie l'elenco riepilogativo di alcuni ordini effettuati su un sito.

    La tabella nel db però, può contenere più di un record relativo allo stesso ordine perchè magari un cliente ha acquistato più di un prodotto. (Ognuno di questi record ha però lo stesso codice ordine)
    Allora la domanda è questa: come faccio ad evitare che mi si estraggano tutti i singoli record quando magari sono relativi allo stesso ordine avendo un unico codice ordine??? Io vorrei che in questa pagina mi si visualizzassero soltanto la Data dell'ordine, il Cliente che l'ha effettuato e il Codice ordine.
    Oddio mi sà che ho spiegato malissimo....spero qualcuno capisca... :master:

  2. #2
    Effettivamente non ti sei spiegata molto bene,
    cmq a quello che ho capito io potresti provare ad usare il metodo
    GROUP BY 'codice ordine'
    per es. così
    SELECT 'dato1' FROM 'tabella' GROUP BY 'dato1'

    Prova a spegarti meglio magari ti so dire qualcosa di più.
    Ciao

  3. #3
    Vediamo se ho capito bene.
    In questa tabella, in merito ad un ordine univoco, hai gli stessi campi relativi a codice ordine, codice cliente e data, mentre, invece, ovviamente hai diversi codice prodotto, giusto?
    Basta fare una query con DISTINCT per codice ordine.
    Ad ogni modo io strutturerei tutto su quattro tabelle:
    codice:
    TabellaClienti
    idCliente - contatore
    ...
    
    TabellaProdotti
    idProdotto - contatore
    ...
    
    TabellaOrdini - contatore
    idOrdine - contatore
    codiceOrdine - testo (stringa alfanumerica contenente il codice ordine creato con un eventuale algoritmo esterno).
    idCliente - numerico
    dataOrdine - data
    ...
    
    TabellaProdottiOrdinati
    idOrdine - numerico
    idProdotto - numerico
    quantitaProdotto - numerico
    ...
    In questo modo quando inserisci un ordine nella "TabellaOrdini" inserisci l'ID del cliente e la data dell'ordine.
    Poi, nella "TabellaProdottiOrdinati" inserisci tanti record con lo stesso ID ordine per quanti prodotti sono stati ordinati.
    Le relazioni sono date dagli stessi campi (con stesso nome) presenti tra le varie tabelle.
    Per sapere quanti ordini ha effettuato il cliente X in una deternimata data basta fare una query sulla "TabellaOrdini" passandole i prametri idCliente (preso dalla "TabellaClienti" e dataOrdine.
    Dal risultato della query ottieni l'elenco degli ordini (tra cui il campo idOrdine.
    Per conoscere il dettaglio di un ordine basta interrogare la "TabellaProdottiOrdinati" passandole il valore idOrdine.

  4. #4
    Utente di HTML.it L'avatar di gnola
    Registrato dal
    Jun 2001
    Messaggi
    603
    Allora...grazie per le risposte...

    in effetti ho fatto già diverse tabelle per i CLienti e per i prodotti.
    Ma in quella degli ordini totali appunto posso avere più record relativi allo stesso cliente.
    Ma aprendo la pagina asp del riepilogo degli ordini non posso passargli inizialmente nessun idcliente o codiceordine perchè deve farmi vedere tutti gli ordini....poi sicuramente cliccando su ognuno posso andare al dettaglio di quel singolo ordine passandogli il codice.

    Come mi diceva Ir0nFl4m3 ho provato con GROUP BY e in effetti funziona ma soltanto se tiro fuori solo quel dato....e se invece oltre al codice dell'ordine volessi estrarre anche la data e il codice cliente???

  5. #5
    Se devi tirare fuori più campi fai invece che

    SELECT 'dato1' FROM 'tabella' GROUP BY 'dato1'

    così

    SELECT * FROM 'tabella' GROUP BY 'dato1'

    poi ti crei il recordset e tiri fuori i campi con

    recordset("campo1") | recordset("campo2") | recordset("campo3")

    Se hai bisogno sono qua ^_^

  6. #6
    Utente di HTML.it L'avatar di gnola
    Registrato dal
    Jun 2001
    Messaggi
    603
    Ciao!!
    non mi sono collegata per alcuni giorni ma comunque ho risolto..anche se in modo un pò più "rude"..anche perchè avevo provato come dicevi tu ma mi dà questo errore:

    Impossibile raggruppare in base a campi selezionati con "*".

    comunque grazie lo stesso!!
    ciao

  7. #7
    Se non sbaglio con il metodo GROUP BY vanno specificati i nomi dei campi, non va usato l'*.

    non così
    SELECT * FROM 'tabella' GROUP BY .....
    ma così
    SELECT dato1, dato2, ecc... FROM 'tabella' GROUP BY ...

  8. #8
    Utente di HTML.it L'avatar di gnola
    Registrato dal
    Jun 2001
    Messaggi
    603
    Avevo provato anche così!! non ti dico le prove che ho fatto!! stavo praticamente creando un nuovo asp!!

    ciaoo!

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.