|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Nov 2012
Messaggi: 17
|
Query tra due tabelle clienti e ordini
Ragazzi ciao, sto creando un database con una tabella clienti e una tabella ordini, ho bisogno di creare una query che mi estragga tutti gli ordini di un determinato cliente, come posso fare?Ho le seguenti tabelle:
Clienti:Codice,Ragione_sociale,Fatt 2011,Fatt 2012,Località,Indirizzo,cod_ord(chiave esterna della tabella ordini) Ordini:codice_ordine,Data_ordine,Descrizione,Totale_€ Sicuro di una vostra risposta vi ringrazio anticipatamente Ultima modifica di Aleiovine86 : 01-12-2012 alle 19:46. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Oct 2010
Città: Savona
Messaggi: 194
|
Scusa hai fatto la normalizzazione del database?
Secondo me devi inserire una chiave per i clienti e tramite quella chiave devi associare le informazioni degli ordini che anch'essi avranno una chiave. Con un tipo di relazione uno a molti. Quindi dovrai cercare per ogni cliente i record ordini associati al cliente. Almeno come la vedo io.
__________________
AMD Phenom II X6 3Ghz, MB Gigabyte 790xta-ud4 F4A, 4Gb Ram ddr3, HD Segate Barracuda 1T, SV ASUS GTX 560 Ti DirectCu II ,Monitor Philips 1920x1080 led 2 ms, Xbox360 Slim, Tablet Asus Transformer Pad TF300T, Gameboy Advance, Ipod Touch 16Gb |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2006
Città: Montalto Uffugo
Messaggi: 6044
|
Chiave prima nella anagrafica della tabella clienti è codice , chiave primaria nella tabella ordini è la coppia codice_ordine più codice cliente (che sarebbe chiave esterna per questa tabella ma chiave primaria nell'altra).
Fatto questo ,relazione uno a molti , puoi eseguire la query nella seconda tabella facendo anche un select nella prima per restituire il nome del cliente e non il codice con tutti i suoi ordini. Sent from my iPhone using Tapatalk |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
Quote:
Codice:
SELECT Codice || ' ,' || Ragione_sociale, Fatt 2011, Fatt 2012, (Località || ',' || Indirizzo) AS Indirizzo, to_char(cod_ord) || ' ' || (select Descrizione where codice_ordine = o.cod_ord ) AS Ordine_codice, (select Data_ordine where codice_ordine = o.cod_ord ) AS Ordine_data, (select Totale_€ where codice_ordine = o.cod_ord ) AS Ordine_totale FROM Clienti o WHERE Codice = 'xxxx';
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
|
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Nov 2012
Messaggi: 17
|
Secondo me ho bisogno di capire prima una cosa: quando inserisco un ordine come faccio a dire di quale cliente è?
Se capisco questo dopo è più facile creare la query...aspetto vostre risposte thanks |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
scrivi qui la query che hai in mente che poi ci lavoriamo sopra, ok?
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
|
|
|
|
|
#7 |
|
Junior Member
Iscritto dal: Nov 2012
Messaggi: 17
|
Guarda sei gentilissimo grazie davvero, ma mi sn reso conto che devo capire prima bene come creare le tabelle per far si che quando inserisco un ordine devo anche dire per quale cliente è, siete d'accordo? Quindi come creare le tabelle?
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2008
Messaggi: 429
|
consiglio semplice semplice:
un cliente può avere più ordini? SI un ordine può appartenere a più clienti? NO quindi relazione 1-N tabella cliente: id_cliente, nome_cliente tabella ordine: id_ordine, totale_ordine, cliente_id (questa è la chiave esterna) per recuperare gli ordini di un cliente poi basterà fare select * from ordine where cliente_id = 1 |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Quote:
Chiaro che se vuoi fare una query direttamente su db, ti dovrai inventare tu chi diavolo ha fatto quest'ordine |
|
|
|
|
|
|
#10 |
|
Junior Member
Iscritto dal: Nov 2012
Messaggi: 17
|
Benissimo, quindi la tabella cliente dovrà avere anche un campo codice cliente ma non come chiave esterna?giusto? In modo tale che quando inserisco un ordine inserisco anche il suo codice... Fammi sapere
|
|
|
|
|
|
#11 | |
|
Junior Member
Iscritto dal: Nov 2012
Messaggi: 17
|
Quote:
|
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Come già ti han detto avrai una tabella clienti con una chiave primaria che identificherà ogni cliente. E una tabella ordini con una chiave primaria composta da codice_ordine e codice_cliente, che insieme identificheranno ogni ordine.
Ora che ci penso la chiave della tabella ordini potrebbe anche essere solo il codice dell'ordine. Non son più così fresco di basi di dati per capire cosa ciò comporti però. Di sicuro qualche differenza c'è. Ultima modifica di ndakota : 02-12-2012 alle 13:32. |
|
|
|
|
|
#13 |
|
Junior Member
Iscritto dal: Nov 2012
Messaggi: 17
|
Risolto
Perfetto ragazzi ora è tutto a posto grazie a voi..ora apro un'altra discussione perchè devo chiedervi un'altra cosa
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jan 2006
Città: Montalto Uffugo
Messaggi: 6044
|
Solitamente la relazione uno a molti si scindi interponendo una nuova tabella intermedia, quindi si avrebbe una tabella cliente contenente un id_cliente come chiave primaria e tutti gli altri campi, un tabella contenente id_cliente ed id_ordine (entrambi chiavi) ed infine una tabella ordini contenente id_ordine come chiave primaria e poi tutti gli altri campi.
Sent from my iPhone using Tapatalk |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
Quote:
Inviato dal mio HUAWEI U8825-1 con Tapatalk 2
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jan 2006
Città: Montalto Uffugo
Messaggi: 6044
|
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
Grazie cmq x per avere chiarito.
Essendo uno che impara "as I go" fa piacere a volte avere conferme Inviato dal mio HUAWEI U8825-1 con Tapatalk 2
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Jan 2006
Città: Montalto Uffugo
Messaggi: 6044
|
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: May 2008
Messaggi: 429
|
Quote:
da che mondo e mondo per una relazione 1 a molti bisogna creare una tabella intermedia? basta una chiave esterna. una tabella intermedia contenente la coppia delle chiavi primarie va fatta in una relazione molti a molti, come ad esempio ordine-prodotto |
|
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Jan 2006
Città: Montalto Uffugo
Messaggi: 6044
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:26.




















