| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  13-04-2006, 11:38 | #1 | 
| Senior Member Iscritto dal: Apr 2001 Città: Roma 
					Messaggi: 775
				 | 
				
				[ACCESS] Ricerca all'interno di tabelle correlate
			 
		Ciao, buonasera. Sto sbattendo la testa su questo archivio ormai da 1 mese e purtroppo non conosco bene access....Cerco aiuto.   Sto realizzando un archivio per dei brani musicali. Questo archivio ha una tabella principale chiamata COSTANTI dove sono memorizzati i vari record (titoli e altre informazioni dei brani). C'è anche una cartella VARIABILI dove ci sono i titoli secondari dei brani che si trovano in COSTANTI. Praticamente, ogni [Titolo principale] che si trova in COSTANTI può avere + di un [Titolo] che si trova in VARIABILI. A legare queste 2 tabelle ci sono i campi [ID]in COSTANTI e [Riferimento ID]in VARIABILI. Ho realizzato una maschera legata ad una query di selezione per effetuare la ricefca tramite [Titolo principale]. Ovviamente la ricerca dovrà essere eseguita anche su [Titolo]. Il problema è che, se io faccio una ricerca su tutti i brani che iniziano per "A", lui nella maschera mi ripete i [Titolo principale] tutte le volte che trova nel corrispettivo [Titolo] un brano che inizia per "A". Praticamente, se io ho questo record: [Titolo principale]=Brocco [ID]=1 [Titolo]=Allready [Riferimento ID]=1 [Titolo]=Assie [Riferimento ID]=1 [Titolo]=Amelia [Riferimento ID]=1 ...lui mi mostra 3 volte la stessa maschera anche se tutti e 3 i titoli appartengono allo stesso [ID]=1 Come posso correggere questa cosa?   PS se qualcuno vuole posso passargli il file.   | 
|   |   | 
|  13-04-2006, 19:15 | #2 | 
| Senior Member Iscritto dal: Apr 2001 Città: Roma 
					Messaggi: 775
				 | 
		Nessuno può aiutarmi?
		 | 
|   |   | 
|  18-04-2006, 14:22 | #3 | 
| Senior Member Iscritto dal: Nov 2002 Città: Torino 
					Messaggi: 1124
				 | 
		cioè il problema è che ti tira fuori solo i titoli secondari che iniziano per A, mentre tu vorresti titolo che inizia per A seguito da titoli secondari a prescindere dall'iniziale? potresti postare la query che hai utilizzato? 
				__________________ "Ai consider des de fleg ov iunait stais nos onli e fleg ov e caunti, bas is a iuniversal messeig ov fridom ev... dimocrasi"   | 
|   |   | 
|  19-04-2006, 10:46 | #4 | |
| Senior Member Iscritto dal: Apr 2001 Città: Roma 
					Messaggi: 775
				 | Quote: 
 Ciao, e grazie tantissimo per la risposta.  Non prorpio. Se nella query inserisco solo la tabella COSTANTI, inserendo "A" lui mi tira fuori tutti i record che iniziano per "A". Ho realizzato una maschera per cui, ogni volta che mostra un record proveniente dalla query, lui associa i corrispettivi "titoli secondari" a quel "titolo primario" (grazie al campo ID e RIFERIMENTO ID). Fin qui tutto bene, la maschera funziona a meraviglia e anche la query: SELECT Costanti.ID, Costanti.[Titolo Primario], Costanti.Genere, Costanti.Durata, Costanti.Autori, Costanti.Descrizione, Costanti.SIAE FROM Costanti WHERE (((Costanti.[Titolo Primario]) Like [Inserisci il titolo]+"*")) ORDER BY Costanti.[Titolo Primario]; Il problema è che vorrei effettuare la ricerca in questione anche sui titoli secondari. Quindi creo una relazione tra le 2 tabelle nella query tramite il record ID---->RIFERIMENTO ID. A questo punto inserisco lo stesso criterio di ricerca anche in VARIABILI sotto la voce [TITOLO] (titoli secondari). Inserendo "A" mi trovo come risuulatato la maschera con il record principale [titolo primario] BUIACCA poiche nei titoli secondari [titolo] c'è un ALMA. Fin qui tutto perfetto. Il problema subentra quando ho + di un titolo secondario. Lui mi mostra tante maschere uguali quanti sono i titoli secondari perche lui li vede come tante schede separate. La query in questione è questa: SELECT Costanti.ID, Costanti.[Titolo Primario], Costanti.Genere, Costanti.Durata, Costanti.Autori, Costanti.Descrizione, Costanti.SIAE, Variabili.Titolo FROM Costanti LEFT JOIN Variabili ON Costanti.ID = Variabili.[Riferimento ID] WHERE (((Costanti.[Titolo Primario]) Like [Inserisci il titolo]+"*")) OR (((Variabili.Titolo) Like [Inserisci il titolo]+"*")) ORDER BY Costanti.[Titolo Primario]; Se trovassi il modo nella maschera di non mostrare i record con lo stesso [ID], avrei risolto il problema. Oppure modificare la query....ma non so come. Puoi aiutarmi? Se vuoi posso passarti l'archivio tramite email o MSN.. Il mio indirizzo è [email protected] Grazie ancora   Ultima modifica di marco1474 : 19-04-2006 alle 10:50. | |
|   |   | 
|  19-04-2006, 11:00 | #5 | 
| Senior Member Iscritto dal: Apr 2001 Città: Roma 
					Messaggi: 775
				 | 
		Per farti capire meglio ti posto l'immagine della maschera:   Questa maschera in particolare, facendo la query con la lettera "B", esce fuori la maschera di ASTRA poiche nel titolo secondario c'è BOBO. ed è OK poiche la lettera "B" c'è solo nei titoli secondari. Se ci fossero stati + titoli secondari con la "B" lui mi avrebbe fatto vedere questa identica maschera per X volte quante sono i titoli con la "B". Quest'altra invece si comporta addirittura differentemente:   Questa mi viene mostrata 3 volte poiche il tilolo con la "B" è in [titolo primario] e mi viene mostrata per 3 volte poiche i titoli secondari sono 3 e lui li interpreta come 3 singoli risultati anche se hanno lo stesso [ID]. | 
|   |   | 
|  19-04-2006, 14:12 | #6 | |
| Member Iscritto dal: Feb 2006 
					Messaggi: 36
				 | Quote: 
 Non potresti mettere anche il "Titolo principale" nella cartella "VARIABILI" ? In questo caso la query sarà solo su "VARIABILI" e dovrai leggere una sola volta tramite ID la tabella "COSTANTI", prima di iniziare il ciclo di composizione della griglia. La mia spiegazione è un pò caotica, ciao !!! | |
|   |   | 
|  19-04-2006, 14:59 | #7 | |
| Senior Member Iscritto dal: Apr 2001 Città: Roma 
					Messaggi: 775
				 | Quote: 
 Capito......più tardi provo a fare come dici e poi ti dico se funziona.   Grazie 1000 per il sugerimento   | |
|   |   | 
|  19-04-2006, 17:09 | #8 | |
| Senior Member Iscritto dal: Apr 2001 Città: Roma 
					Messaggi: 775
				 | Quote: 
 Purtroppo non funziona a livello logico. Potrei inserire una voce [titolo principale] in VARIABILI, ma il risultato non cambierebbe poiche leggerebbe in COSTANTI ogni volta che trova un titolo anche se nella stessa scheda. Oppure inserire il titolo principale sotto [titolo] in VARIABILI ma a questo punto perderei il titolo principale poiche verrebbe visto come un titolo normale e quindi ripetuto in ogni scheda. Ci vorrebbe un filtro nella maschera che tenga solo il primo riferimento ID e cancelli i successivi se sono uguali.   | |
|   |   | 
|  19-04-2006, 17:29 | #9 | 
| Senior Member Iscritto dal: Apr 2001 Città: Roma 
					Messaggi: 775
				 | 
		Un'idea: Guardate questa immagine:   Cliccando sulla freccetta a destra [BRANO SUCCESSIVO], lui va al record successivo trovato dalla query. Si può aggiungere a questo comando un istruzione del genere: SE [ID] UGUALE A [ID DEL PRECEDENTE RECORD] ALLORA VAI AL RECORD SUCCESSIVO. E' possibile? | 
|   |   | 
|  19-04-2006, 17:45 | #10 | |
| Member Iscritto dal: Feb 2006 
					Messaggi: 36
				 | Quote: 
 Comunque, se vuoi un filtro, basta mettere nella query GROUP BY ID, ecc. Credo che ti stia complicando la vita... se vuoi, invia il sorgente via mail, in qualsiasi momento | |
|   |   | 
|  19-04-2006, 17:59 | #11 | |
| Senior Member Iscritto dal: Apr 2001 Città: Roma 
					Messaggi: 775
				 | Quote: 
 Te ne sarei immensamente grato..... Mi dai l'email in PVT?   Grazie ancora.  PS: Comunque avevo capito.....infatti avevo scritto: "Oppure inserire il titolo principale sotto [titolo] in VARIABILI ma a questo punto perderei il titolo principale poiche verrebbe visto come un titolo normale e quindi ripetuto in ogni scheda. "   Ultima modifica di marco1474 : 19-04-2006 alle 18:13. | |
|   |   | 
|  19-04-2006, 19:05 | #12 | 
| Senior Member Iscritto dal: Apr 2001 Città: Roma 
					Messaggi: 775
				 |   Il codice SQL del tasto [RECORD SUCCESSIVO] è il seguente: Private Sub RecordSuccessivo_Click() On Error GoTo Err_RecordSuccessivo_Click DoCmd.GoToRecord , , acNext Exit_RecordSuccessivo_Click: Exit Sub Err_RecordSuccessivo_Click: MsgBox Err.Description Resume Exit_RecordSuccessivo_Click End Sub Come faccio ad inserirgli il comando: SE [ID] UGUALE A [ID DEL PRECEDENTE RECORD] ALLORA VAI AL RECORD SUCCESSIVO?   | 
|   |   | 
|  20-04-2006, 11:14 | #13 | 
| Senior Member Iscritto dal: Apr 2001 Città: Roma 
					Messaggi: 775
				 | 
		Ho risolto il problema grazie a ViolaX che è stata gentilissima. La query è stata così modificata: PRIMA: SELECT Costanti.ID, Costanti.[Titolo Primario], Costanti.Genere, Costanti.Durata, Costanti.Autori, Costanti.Descrizione, Costanti.SIAE, Variabili.Titolo FROM Costanti LEFT JOIN Variabili ON Costanti.ID = Variabili.[Riferimento ID] WHERE (((Costanti.[Titolo Primario]) Like [Inserisci il titolo]+"*")) OR (((Variabili.Titolo) Like [Inserisci il titolo]+"*")) ORDER BY Costanti.[Titolo Primario]; DOPO: SELECT Costanti.ID, Min(Costanti.[Titolo Primario]) AS [MinDiTitolo Primario], Min(Costanti.Genere) AS MinDiGenere, Min(Costanti.Durata) AS MinDiDurata, Min(Costanti.Autori) AS MinDiAutori, Min(Costanti.Descrizione) AS MinDiDescrizione, Min(Costanti.SIAE) AS MinDiSIAE, Min(Variabili.Titolo) AS MinDiTitolo FROM Costanti LEFT JOIN Variabili ON Costanti.ID = Variabili.[Riferimento ID] WHERE (((Costanti.[Titolo Primario]) Like [Inserisci il titolo]+"*")) OR (((Variabili.Titolo) Like [Inserisci il titolo]+"*")) GROUP BY Costanti.ID ORDER BY Min(Costanti.[Titolo Primario]); Ora funziona tutto a perfezione. Grazie ancora a Viola   | 
|   |   | 
|  27-07-2006, 12:51 | #14 | 
| Junior Member Iscritto dal: Jul 2006 
					Messaggi: 3
				 | 
				
				Aiuto per SQL!
			 
		Ciao a tutti, sono Simona, domani ho un esame su visual basic e sql e non ho trovato un argomento che devo sapere: USO DELLE VARIABILI NEL JOIN. Qualcuno può spiegarmelo? Mandate la risposta a [email protected] aiutatemi!!! | 
|   |   | 
|   | 
| Strumenti | |
| 
 | 
 | 
Tutti gli orari sono GMT +1. Ora sono le: 13:17.









 
		 
		 
		 
		







 
  
 



 
                        
                        










