Visualizzazione dei risultati da 1 a 10 su 10

Discussione: query filtro cerca

  1. #1

    query filtro cerca

    Salve
    Dovrei fare un filtro cerca, io utilizzo asp con Db in access; non riesco a fare funzionare la stringa per estrarre i dati dal DB.

    Nel Db ho le tabelle:
    1) EVENTI (formata da
    -id_evento (contatore)
    -titolo (testo)
    -dove (testo)
    -data_inizio (Data/ora)

    2) CATEGORIE
    -id_categoria (contatore)
    -categoria (testo)

    3) eventi_cat
    -id_eventi_cat (contatore)
    -id_eventi (numerico)
    -id_categoria (numerico)




    In pratica devo estrarre dal Db degli eventi:
    - che appartengono a una o più categorie,
    - che appartengono a una data
    - relative a un luogo specifico (campo dove)
    - alla categorie selezionate + il luogo
    - alle categorie selezionate+data
    - alla categorie selezionate + il luogo + la data


    Ho provato a fare la stringa sql:

    sql_cat = "SELECT DISTINCT eventi.titolo,eventi.id_evento,eventi.data_inizio, eventi.classe,eventi.dove FROM categorie INNER JOIN (eventi INNER JOIN eventi_cat ON eventi.id_evento = eventi_cat.id_eventi) ON categorie.id_categoria = eventi_cat.id_categoria where categorie.categoria = '"& cat(1) &"' OR categorie.categoria = '"&cat(2)&"' OR categorie.categoria = '"&cat(3)"' OR categorie.categoria = '"&cat(4) "' OR categorie.categoria = '"&cat(5) & " ' "

    dove cat(x) è un array che mi arriva da un form, e fin qui funziona tutto, quando però gli aggungo alla where :
    ... eventi.dove like '%"&dove& "%' " And categorie.categoria = ecc
    il where non mi funziona (esempio se io cerco una città come milano mi escono fuori torino ecc

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Stampa la query ed eseguila direttamente in Access così ti sarà pià semplice capire cosa non va.

    Roby

  3. #3
    ho pravato ma continua a non funzionare..

    SELECT DISTINCT eventi.titolo, eventi.id_evento, eventi.data_inizio, eventi.classe, eventi.dove
    FROM categorie INNER JOIN (eventi INNER JOIN eventi_cat ON eventi.id_evento = eventi_cat.id_eventi) ON categorie.id_categoria = eventi_cat.id_categoria
    WHERE (((categorie.categoria)='cultura')) OR (((eventi.dove)="torino") AND ((categorie.categoria)='musica'))
    ORDER BY eventi.id_evento;



    Dove sbaglio?

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Le parentesi con quale criterio sono state inserite?

    roby

  5. #5
    le ha inserite in automatico access, pero nonda errore semplicemente non filtra il dove

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Il numero di parentesi è corretto ma forse abbastanza casuale...

    Roby

  7. #7
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,781
    codice:
    SELECT DISTINCT eventi.titolo, eventi.id_evento, eventi.data_inizio, eventi.classe, eventi.dove
    FROM categorie INNER JOIN (eventi INNER JOIN eventi_cat ON eventi.id_evento = eventi_cat.id_eventi) ON categorie.id_categoria = eventi_cat.id_categoria
    WHERE (((categorie.categoria)='cultura')) OR (((eventi.dove)="torino") AND ((categorie.categoria)='musica'))
    ORDER BY eventi.id_evento;
    (eventi.dove)="torino"
    torino è testo, va tra virgolette semplici ( ' )

  8. #8
    ho provato
    SELECT DISTINCT eventi.titolo, eventi.id_evento, eventi.data_inizio, eventi.classe, eventi.dove
    FROM categorie INNER JOIN (eventi INNER JOIN eventi_cat ON eventi.id_evento = eventi_cat.id_eventi) ON categorie.id_categoria = eventi_cat.id_categoria
    WHERE ((categorie.categoria)='cultura') OR ((categorie.categoria)='musica') AND ((eventi.dove)='%torino%')
    ORDER BY eventi.id_evento;

    risultato strano , riassumendo avrei i seguenti eventi

    | Tiotolo | dove | categoria |
    ------------------------------------
    | natale | milano | Musica |
    |prima_guerra | rueglio | cultura |
    |corso inglese | torino | cultura |
    |impressionisti | torino | arte |

    la stinga di prima mi da come risultato:

    |prima_guerra | rueglio | cultura |
    |corso inglese | torino | cultura |

    se tolgo ..AND ((eventi.dove)='%torino%') mi dà

    | natale | milano | Musica |
    |prima_guerra | rueglio | cultura |
    |corso inglese | torino | cultura |


    ???

  9. #9
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,781
    se tolgo ..AND ((eventi.dove)='%torino%') mi dà
    o scrivi in chiaro o scrivi come variabile
    ma sopratutto mi sa che ti perdi in quello che vuoi fare

    devi chiedere un simile o un uguale?
    codice:
    like (eventi.dove)='%"& vardove &"%'
    = (eventi.dove)='"& vardove &"'
    poi non so se il resto vada bene, io ho notato quello

  10. #10
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,781
    ma che ho scritto? funziona quella roba?

    mi che che dovrebbe essere così
    codice:
    per like: WHERE .... (eventi.dove) like '%"& vardove &"%'
    per uguale: WHERE .... (eventi.dove)='"& vardove &"'

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