|
||||
|
|||||||
![]() |
|
|
Strumenti della discussione | Modalità di visualizzazione |
|
|
#11 (permalink) |
|
Utente della community ![]() ![]()
385 Messaggi
![]() |
Pardon, pensavo di essermi spiegato, ecco la Query
![]() codice:
SELECT Spedizioni.ID, Spedizioni.Dat, Spedizioni.A, Magazzino.Materiale, Spedizioni.Quantita, Spedizioni.Stato, Spedizioni.Corriere, Spedizioni.Notes, Spedizioni.Utente FROM Spedizioni, Magazzino WHERE Spedizioni.Materiale = Magazzino.ID ORDER BY Spedizioni.ID DESC Io vorrei quindi avere una Query risultate la Tab Spedizioni ma con al posto di Spedizioni.Materiale (che è un ID) vorrei il corrispettivo nome del materiale, che vorrei pescare nella Tab Magazzino tramite ID. Però mi da quell'errore ![]()
__________________
Luca Corrarati .it MDB/ASP/VB6 Developer & IntraNet Administrator |
|
|
|
|
|
#12 (permalink) | |
|
Very Important Person ![]() ![]()
1,118 Messaggi
![]() ![]() ![]() ![]() ![]() |
Quote:
) ad avere una corrispondenza con un contatore, quindi numerico ?StegCo, anche a me piacerebbe essere un astronauta, ma purtroppo non basta che lo scriva nella mia firma. ![]()
__________________
Il regolamento del forum: la prima cosa da leggere. ![]() |
|
|
|
|
|
|
#13 (permalink) |
|
Moderatore Globale ![]() ![]()
6,521 Messaggi
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Quella che hai scritto non è una JOIN e, sinceramente, pensavo che dopo che ti fosse stata consigliata saresti andato almeno a fare qualche ricerca su internet... ma vedo che non l'hai fatto.
Comunque, delle informazioni sulle JOIN le trovi qui: Join (SQL) - Wikipedia @Spike: Sinceramente apprezzo il tuo interesse e la tua dedizione nel voler comprendere e chiarificare la richiesta... ma d'altro canto sono convinto che, chi chiede aiuto, lo fa per proprio interesse e, per altrettanto proprio interesse, dovrebbe sforzarsi di rendere chiara la sua richiesta arricchendola di dettagli e scrivendo chiaramente in lingua italiana. ![]() TheTruster
__________________
![]() ![]() ![]()
|
|
|
|
|
|
#14 (permalink) |
|
Utente della community ![]() ![]()
385 Messaggi
![]() |
Scusate, ma quindi se io voglio avere una corrispondenza tra due tabelle, come in questo caso, cioè gestire un campo tramite un codice che fa riferimento a una seconda tabella (contente altre informazioni a riguardo) dovrei, nella seconda tabella, NON utilizzare il campo Contatore? e come posso gestire la crezione, per esempio, di un nuovo Record se non ho l'aiuto di un contatore?
Grazie per le info ![]()
__________________
Luca Corrarati .it MDB/ASP/VB6 Developer & IntraNet Administrator |
|
|
|
|
|
#15 (permalink) | |
|
Collega della community ![]() ![]()
951 Messaggi
![]() ![]() ![]() |
Emhhhh......
Non ta la prendere ma ti mancano decisamente le basi di sql Quote:
Primo errore (grave): Spedizione.Materiale contiene un ID giusto? Un Id è un numero intero giusto? Perchè mai usi un campo di tipo testo per mettere un Intero? Cambia il tipo da Testo a Intero Lungo Secondo errore (apocalitticamente grave) Evidentemente non sai cos'è una Join e la Join insieme a Select/Update/Delete è la base assoluta delle query sql, non si può lavorare se non si conoscono queste basi, credimi stai perdendo tempo, fermati anche solo un paio di giorni e studia le Join, vedrai che il tempo che ci guadagni poi ti ripagherà di questa scelta, ora ti spiego cosa fa la tua query: La tua query crea una tabella che abbina a ogni record di Spedizioni tutti i record di magazzino ovvero se Spedizioni contiene 200 Record e Magazzino 20 Record abbiamo un totale di 4000 (non quattrocento quattromila) record nella tua tabella poi prende in esame tutti e 4000 i record e esclude tutti quelli per cui non si verifica la codizione Spedizioni.Materiale = Magazzino.ID riducendo i record a un massimo di 200, il che significa che sono stati creati ed elaborati minimo 3800 record inutili. Ora esaminiamo la query come dovrebbe esser fatta SELECT Spedizioni.ID, Spedizioni.Dat, Spedizioni.A, Magazzino.Materiale, Spedizioni.Quantita, Spedizioni.Stato, Spedizioni.Corriere, Spedizioni.Notes, Spedizioni.Utente FROM Spedizioni Inner Join Magazzino On Spedizioni.Materiale = Magazzino.ID Bene, questa query crea una tabella abbinando a ogni record di spedizioni il record in Magazzino con l'id corrispondente, creando direttamente la tabella finale con un massimo di 200 record (basandoci sull'esempio di prima). Davvero, credimi, stai sprecando tempo, non sapere queste cose significa buttar via ore e ore e ore di lavoro, ma visto che ti ritengo una persona inteligente ti dirò comunque perchè non funziona la tua query, lasciando a te la decisione sulla strada da percorrere, quando tu scrivi "Where Spedizioni.Materiale = Magazzino.ID" gli stai dicendo di confrontare Un campo testo con un campo Contatore, le pere si confrontano con le pere, non con le mele, quindi se proprio vuoi far funzionare questo obrorio devi trasformare uno dei due campi nel formato dell'altro, ad esempio così "Where Spedizioni.Materiale = Cstr(Magazzino.ID)" funziona ma stiamo andando da Roma a Milano passando prima dalla Svizzera poi da Napoli poi da Mosca, poi da Bari quindi da Parigi e quindi finalmente da Milano, davvero non è una cosa inteligente..... Edit: Non ci posso credere avete risposto in 3 mentre rispondevo io......... Scusate il triplo CrossPosting, moh ririspondo a TheTruster e a Stegco (Brontolo a te non ho nulla da dire quindi ti saluto e basta )
__________________
Se sei nuovo e vuoi aiuto il miglior modo che io ho trovato per ottenerlo è porre le domande in modo intelligente Se hai delle domande siamo qui per tentare di risponderti, se hai delle risposte siamo qui per ascoltarle ![]() ![]() Noi siamo una comunità, una bella comunità e funzioniamo sempre meglio se ognuno cerca di seguire al massimo il nostro regolamento
|
|
|
|
|
|
|
#16 (permalink) | |
|
Very Important Person ![]() ![]()
894 Messaggi
![]() ![]() ![]() ![]() |
Quote:
Prova ad eseguirle entrambe con sql server e vedrai che i piani di esecuzione saranno uguali.
__________________
Ciao sspintux ------------------------------------------------------------ Volevamo cambiare il mondo...peccato che abbiamo perso lo scontrino |
|
|
|
|
|
|
#17 (permalink) | |
|
Utente della community ![]() ![]()
385 Messaggi
![]() |
Mea culpa, si in effetti come dice Spike funziona perfettamente
codice:
SELECT Spedizioni.ID, Spedizioni.Dat, Spedizioni.A, Magazzino.Materiale, Spedizioni.Quantita, Spedizioni.Stato, Spedizioni.Corriere, Spedizioni.Notes, Spedizioni.Utente FROM Spedizioni Inner Join Magazzino On Spedizioni.Materiale = CStr(Magazzino.ID) Grazie a tutti ma, questa volta, soprattutto a spikexx84, spero di poter ricambiare il favore ùQuote:
![]()
__________________
Luca Corrarati .it MDB/ASP/VB6 Developer & IntraNet Administrator Ultima modifica di StegcO : 12-03-2010 a 11:15. |
|
|
|
|
|
|
#18 (permalink) | ||
|
Collega della community ![]() ![]()
951 Messaggi
![]() ![]() ![]() |
Quote:
[MshFlexgrid]Proprietà Datasource, prima vuoto poi pieno, selezione sballata Quote:
quello che io ho "provato" descrivendo il primo errore come grave, un campo Id è un intero autoincrementato, quindi metterlo di tipo testo è un bestemia pura in termini come minimo di prestazioni e poi anche e soprattutto di struttura del db.Quello che tu devi fare NON è smettere di usare gli Id di tipo contatore nelle tabelle, ma usare il giusto tipo per i campi che vengono utilizzati per creare le relazioni!!!!!!!!! E ancora creare le relazioni nel modo giusto non con la virgola e una Were ma con le Join. Edit: Ma non è possibile, stavolta avete scritto in 2 mentre io scrivevo la mia risposta 5 crossposting in 2 post, ok ora ririspondo a Stegco e a Spintux
__________________
Se sei nuovo e vuoi aiuto il miglior modo che io ho trovato per ottenerlo è porre le domande in modo intelligente Se hai delle domande siamo qui per tentare di risponderti, se hai delle risposte siamo qui per ascoltarle ![]() ![]() Noi siamo una comunità, una bella comunità e funzioniamo sempre meglio se ognuno cerca di seguire al massimo il nostro regolamento
|
||
|
|
|
|
|
#19 (permalink) | ||
|
Collega della community ![]() ![]()
951 Messaggi
![]() ![]() ![]() |
Quote:
Quote:
Quote:
![]()
__________________
Se sei nuovo e vuoi aiuto il miglior modo che io ho trovato per ottenerlo è porre le domande in modo intelligente Se hai delle domande siamo qui per tentare di risponderti, se hai delle risposte siamo qui per ascoltarle ![]() ![]() Noi siamo una comunità, una bella comunità e funzioniamo sempre meglio se ognuno cerca di seguire al massimo il nostro regolamento
|
||
|
|
|
|
|
#20 (permalink) |
|
Utente della community ![]() ![]()
385 Messaggi
![]() |
Ho messo il campo Intero Lungo come consigliatomi, tornando al problema principale ora la MSHFlexGrid, grazie alla gestione dei campi tramite Join e non come facevo io, è ALMENO il doppio più veloce.
Pensavo di riuscire ad arrivare a una velocità pari alla DBGrid ma va benissimo uguale. Grazie a tutti (in questo caso in particolare a spikexx84) ![]()
__________________
Luca Corrarati .it MDB/ASP/VB6 Developer & IntraNet Administrator |
|
|
|
![]() |
| Strumenti della discussione | |
| Modalità di visualizzazione | |
|
|
Tutti gli orari sono GMT +2. Attualmente sono le 09:56.












) ad avere una corrispondenza con un contatore, quindi numerico ?










Modalità lineare

