Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    ricercare lo stesso valore in diversi campi di diverse tabelle

    Ciao a tutti,
    ho un problema con una query che non riesco a risolvere.
    Devo implementare una "ricerca libera" che permetta, a fronte dell'inserimento di una parola, di ricercarla in diversi campi di diverse tabelle collegate fra di loro.

    codice:
    SELECT campo1, campo2, campo3 
    FROM principale, tabella1, tabella2, tabella3, tabella4
    WHERE (principale.id=tabella1.id) AND (principale.id=tabella2.id) AND (principale.id=tabella3.id) AND (principale.id=tabella4.id) AND ((principale.campotesto like '%" & ricercare & "%') OR (tabella1.campotesto  like '%" & ricercare & "%') OR (tabella2.campotesto like '%" & ricercare & "%') OR (tabella3.campotestolike '%" & ricercare & "%') OR (tabella4.campotesto like '%" & ricercare & "%'))"
    la tabella principale è collegata a tabella1, tabella2, tabella3, tabella4 tramite id
    ricercare è la variabile che contiene la parola che devo cercare nei vari campoTesto delle diverse tabelle.

    Scritta così funziona solo parzialmente, nel senso che mi tira fuori i risultati che soddisfano, ovviamente, tutte le condizioni.
    Quindi se principale.campotesto del record X soddisfa la condizione ma questo record non è legato alla tabella1 il risultato non viene visualizzato. Mentre io vorrei vederlo.
    Pensavo ad una LEFT JOINT ma ho visto esempi con solo due tabelle mentre nel mio caso sono molte di più.
    Cosa posso fare?
    annaelle

  2. #2
    quandi scrivi i vari or e i vari end sbagli

    perchè senza parentesi iniziali or e and si mescolano insieme

    se ho capito bene voui i legami delle tabelle collegate



    WHERE ( (principale.id=tabella1.id) AND (principale.id=tabella2.id) AND (principale.id=tabella3.id) AND (principale.id=tabella4.id) AND ((principale.campotesto like '%" & ricercare & "%') ) AND ( (tabella1.campotesto like '%" & ricercare & "%') OR (tabella2.campotesto like '%" & ricercare & "%') OR (tabella3.campotestolike '%" & ricercare & "%') OR (tabella4.campotesto like '%" & ricercare & "%')) )"

    adesso devi fare le prove non so bene come aiutarti

  3. #3
    Scusa, non mi sono spiegata bene io, in questo modo funziona correttamente (forse non ho trascritto correttamente) il problema è a monte...
    a me servirebbero anche i casi in cui si verifica :
    principale.campotesto like '%" & ricercare & "%'
    ma non si verifica
    principale.id=tabella2.id

    ora sto provando con degli OR ... ma essendo delle relazioni ho paura nella moltiplicazione dei risultati.
    annaelle

  4. #4
    Sono una stupida... bastava farlo fare ad access.
    In pratica ho creato una query in modalità struttura e nelle relazioni che ho messo fra le tabelle ho indicato, come proprietà join di includere tutti i record della prima tabella e solo i record in cui i campi collegati sono uguali dell'altra. Ovviamente ho poi dovuto aggiungere la clausola DISTINCT alla SELECT.

    Grazie grazie
    annaelle

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 © 2021 vBulletin Solutions, Inc. All rights reserved.