Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 10 su 10

Ricerca su tabella figlia e con Like

  1. #1
    Jocman non è in linea Scolaretto
    Ciao a tutti.
    Vorrei effettuare una ricerca su una tabella figlia (relazionata 1-a-molti, con campo comune IDPrincipale), ma devo utilizzare un criterio Like in quanto cerco del testo libero.

    La query è semplice:

    
    SELECT * FROM TabellaFiglia WHERE Campo Like '*testo*';
    
    In effetti ottengo il risultato voluto.
    O quasi....
    Infatti essendo una tabella 1-a-molti, può capitare che il risultato mi possa dare anche più record con lo stesso IDPrincipale, del tipo:

    Record 5, Record 6, Record 6, Record 7, Record 8, Record 8, Record 8

    Poi ricerco nella tabella Padre il dato correlato (ad esempio Nome).

    Il risultato finale di quello che vorrei ottenere vorrebbe essere:

    "Sono stati trovati 4 record corrispondenti ai criteri di ricerca: Topolino, Pippo, Pluto, Paperino"

    Invece ottengo:

    "Sono stati trovati 7 record corrispondenti ai criteri di ricerca: Topolino, Pippo, Pippo, Pluto, Paperino, Paperino, Paperino"

    In pratica, data una chiave di ricerca nella tabella Figlia, quello che realmente mi interessa è sapere quanti e quali record della tabella Padre hanno quella corrispondenza nella tabella Figlia

    Ho provato a raggruppare i risultati della query con un

    
    GROUP BY IDPrincipale
    
    Ma ottengo errore perchè non è possibile raggruppare record selezionati con "*"

    C'è modo di ovviare?

    O sbaglio approccio? Ma del resto il dato che devo cercare è nella tabella Figlia.....

    Andrea
    ℹ️ Leggi di più su Jocman ...

  2. #2
    L'avatar di muttley005
    muttley005 non è in linea Topo di biblioteca
    si ovviamente il modo c'è, posta la query completa
    come ottieni il risultato combianto?
    parli di query a campi incrociati?
    DISTINCT ?


    ps: ho come l'impressione che questa tua affermazione
    Ho provato a raggruppare i risultati della query con un

    1
    GROUP BY IDPrincipale
    Ma ottengo errore perchè non è possibile raggruppare record selezionati con "*"
    sia errata, secondo me non raggruppi correttamente
    Ultima modifica di muttley005; 16-04-2021 16:56 

  3. #3
    Jocman non è in linea Scolaretto
    Questo è quello che faccio:

    Genero la query (in base ad alcuni toggle e campi testo), ottenendo questo:

    
    SELECT * FROM tblPraticheInf WHERE [Esito] Like '*prova*';
    
    La query seleziona in effetti restituisce quello che richiedo, cioè tutti i i record figli in cui è presente la chiave di ricerca

    dopodichè apro il recordset in base a quella query e ciclo per ricavare le informazioni che cerco (cioè quali sono i record della tabella padre che hanno quel risultato nella tabella figlia):

    
    Do Until .EOF
                 Elenco = Elenco & vbCrLf & DLookup("Pratica", "tblPratiche", "IDPratica=" & !IDPratica) & " IT " & DLookup("AnnoIT", "tblPratiche", "IDPratica=" & !IDPratica)
                 .MoveNext
            Loop
    
    ho provato a raggruppare i risultati della query per IDPratica (GROUP BY IDPratica) ma come detto ottengo l'errore che non è possibile raggruppare dati selezionati con "*".

    La tabella (Figlia 1-a-molti) in cui ricerco ha semplicemente 4 campi:

    IDProgressivo (Contatore)
    IDPratica (Numerico > che fa riferimento al Contatore IDPratica della tabella Pratica)
    Esito (Campo testo)
    Note (Campo testo)

    Probabilmente (mi riservo un ottimistico dubbio) sbaglio nell'impostare quel ciclo per ricavare l'elenco che voglio visualizzare, ma il problema che mi rimane è che se riuscissi a raggruppare i dati della query, otterrei l'elenco giusto (cioè senza ripetizioni)
    ℹ️ Leggi di più su Jocman ...

  4. #4
    L'avatar di muttley005
    muttley005 non è in linea Topo di biblioteca
    quello che fai non ha senso, pensaci, tu ottieni N righe con idPratica potenzialmente nulli, poi esegui 2 lookup distinte con stesso filtro... anche no.
    La cosa che dovresti fare è un'unica SQL con una semplice join e raggruppata o in distinct su ciò che poi andrai a ciclare per creare una stringa con le occorrenze.


    select distinct tabA.qualcosa
    from tabA inner join tabB on tabA.idA=tabB.idA
    where tabB.campoDaFiltrare like '*testoDaCercare*'
    

  5. #5
    Jocman non è in linea Scolaretto
    Sull'SQL sono ancora.....giovane pischello, questo è da ammettere e soprattutto su quelle su più tabelle
    Sicuramente mi studio il tuo suggerimento (anche per imparare qualcosa di nuovo).

    Non ti seguo però quando dici che ottengo IDPratica "potenzialmente nulli".....
    ℹ️ Leggi di più su Jocman ...

  6. #6
    CarlettoFed non è in linea Scolaretto
    Forse è meglio se alleghi un file, per vedere realmente come è la struttura del data base.

  7. #7
    Jocman non è in linea Scolaretto
    Ho risolto il problema (come suggerito) e imparato qualche altra cosa sull'SQL, non avevo mai visto la clausola DISTINCT, grazie mille per il suggerimento

    Quanto alla "reale" struttura del DB....
    Il mio problema è relativo alle 2 tabelle (padre e figlia) che ho indicato la cui struttura è quella (padre con circa 30 campi e figlia con 4 campi) e la relativa query quella indicata.

    Sapere che il DB contiene altre 10 tabelle (che oltretutto non hanno nessun collegamento a quelle indicate) , 5 maschere, qualche query e qualche modulo che informazioni utili aggiuntive potrebbe apportare a quello che era il mio problema?
    ℹ️ Leggi di più su Jocman ...

  8. #8
    Quote Originariamente inviato da Jocman Visualizza il messaggio
    ... non avevo mai visto la clausola DISTINCT
    ecco cosa succede ad usare troppo l'interfaccia grafica. QBE (noto anche come visualizzazione struttura delle query) è bello, comodo (non sempre) ma non può mai sostituire ... (Jocman sa che quando lo punzecchio le intenzioni sono buone). Studia.

  9. #9
    L'avatar di muttley005
    muttley005 non è in linea Topo di biblioteca
    errore di scrittura, intendevo non "nulli" ma "doppi", nn so perchè mi sia venuto da scrivere nulli

  10. #10
    Jocman non è in linea Scolaretto
    A dire il vero è un pò che cerco di usare l'interfaccia grafica il meno possibile, anzi scribacchio volentieri i miei tentativi di query in SQL.
    E fino a certi livelli devo dire che vanno.
    Per il resto, beh c'è tanto da imparare. Spero di vivere abbastanza a lungo
    ℹ️ Leggi di più su Jocman ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Query di eliminazione in base a valore di tabella figlia
    Da OsvaldoLaviosa nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 23-03-2018, 20:21
  2. Risposte: 0
    Ultimo Post: 16-01-2013, 23:05
  3. Doppia ricerca su tabella
    Da alimax88 nel forum Microsoft Access
    Risposte: 3
    Ultimo Post: 10-04-2011, 22:49
  4. Ricerca record in una tabella
    Da alimax88 nel forum Microsoft Word
    Risposte: 7
    Ultimo Post: 05-04-2011, 12:37
  5. Uscire da form figlia
    Da chiabgigi nel forum Microsoft Word
    Risposte: 14
    Ultimo Post: 02-09-2009, 09:09