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

    [mySQL] Syntax Error in Query

    Buongiorno, sono piuttosto nuovo nel mondo SQL e non riesco a capire dove sia l'errore di sintassi.
    Mi restituisce syntax error near AND.
    lo scopo dell query é recuperare i parametri di ricerca da campi compilabili -i valori tra parentesi graffe- e quindi fare una ricerca su vari campi di un database, divisi su più tabelle.
    Ogni aiuto sarà apprezzato.

    codice:
    select tblAnagrafica.Cognome,
           tblAnagrafica.Nazionalita,
           tblAnagrafica.TitoloDiStudio,
           tblAnagrafica.Master,tblCorsi.CorsoDiAggiornamento,
           tblConoscenzeInformatiche.SoftwaretblQualifiche.Qualifica,
           tblQualifiche.NormaDiRiferimento,
           tblLingueStraniere.Lingua Straniera
    from tblAnagrafica, tblCorsi,tblQualifiche,
    tblMansioni,tblLingueStraniere, tblConoscenzeInformatiche
    where  tblMansioni.id_tblAnagrafica=tblAnagrafica.id
           and tblCorsi.id_tblAnagrafica = tblAnagrafica.id
           and tblQualifiche.id_tblAnagrafica = tblAnagrafica.id
           and tblMansioni.id_tblAnagrafica = tblAnagrafica.id
           and tblLingueStraniere.id_tblAnagrafica = tblAnagrafica.id
           and tblConoscenzeInformatiche.id_tblAnagrafia = tblAnagrafica.id
           and tblAnagrafica.Cognome = {srcCognome}
          and tblAnagrafica.Nazionalita = {srcNazionalita}
          and tblAnagrafica.TitoloDiStudio = {srcTitolo}
          and tblAnagrafica.Master = {srcMaster}
          and tblCorsi.CorsoDiAggiornamento = {srcCorsi1}
          and tblCorsi.CorsoDiAggiornamento = {srcCorsi2}
          and tblCorsi.CorsoDiAggiornamento = {srcCorsi3}
          and tblCorsi.CorsoDiAggiornamento = {srcCorsi4}
          and tblCorsi.CorsoDiAggiornamento = {srcCorsi5}
          and  tblQualifiche.Qualifica = {srcQualifica1}
          and tblQualifiche.Qualifica = {srcQualifica2}
          and tblQualifiche.Qualifica = {srcQualifica3}
          and tblQualifiche.NormaDiRiferimento = {srcNormativa1}
          and tblQualifiche.NormaDiRiferimento = {srcNormativa2}
          and tblMansioni.Mansione = {srcMansioni1}
           and tblMansioni.Mansione = {srcMansioni2}
           and tblMansioni.Mansione = {srcMansioni3}
           and tblMansioni.Mansione = {srcMansioni4}
           and tblLingueStraniere.Lingua Straniera = {srcLingua1}
           and tblLingueStraniere.Lingua Straniera = {srcLingua2}
           and tblLingueStraniere.Lingua Straniera = {srcLingua3}
           and tblLingueStraniere.Lingua Straniera = {srcLingua4}
           and tblConoscenzeInformatiche.Software = {srcSoftware1}
            and tblConoscenzeInformatiche.Software = {srcSoftware2}
            and tblConoscenzeInformatiche.Software = {srcSoftware3}
            and tblConoscenzeInformatiche.Software = {srcSoftware4};

  2. #2
    Beh! di AND ne hai tanti, forse troppi.
    and tblAnagrafica.Cognome = {srcCognome}

    cosa e' quel srcCognome ???

    considera poi AND come un moltiplicatore quindi se un risultato e' FALSE (zero) sara' zero (false) il risultato.

    non credo sia probabile che, per solo esempio, il corso di aggiornamento sia presente nello stesso campo con 5 valori distinti, quindi si presume debba essere un OR (o uno o un'altro)

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Grazie per la risposta.
    quel {srcCognome} é il valore restituito da un form, viene sostituito da un valore in runtime.
    Io sto cercando di fare una ricerca su più valori contemporaneamente, e una persona può avere fatto più di un corso di qualificazione e dovrei poter cercare per una persona che abbia fatto più corsi.
    Il valore di default restituito dai campi di ricerca è %, quindi dovrebbe funzionare anche compilando solo, diciamo, due campi corso.
    Grazie molte.

  4. #4
    % inserito nel campo non e' un carattere jolly ma un valore ascii ed i valori ascii devono essere inseriti tra apici.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Capisco...
    Quindi nella migliore delle ipotesi cercherebbe per "%".
    Non male. Malissimo.
    Hai comunque idea dove sia il syntax error near "and"?
    (o come strutturare la query in modo che sia meno cervellotica con 200.000 AND?)

  6. #6
    Quote Originariamente inviata da paradigmalex Visualizza il messaggio
    Capisco...
    Quindi nella migliore delle ipotesi cercherebbe per "%".
    Non male. Malissimo.
    Hai comunque idea dove sia il syntax error near "and"?
    (o come strutturare la query in modo che sia meno cervellotica con 200.000 AND?)
    Quando ti scrive near "and" scrive insieme anche qualcosa d'altro che ti indica in quale riga e' avvenuto l'errore.

    il segno % non deve utilizzare campo = '$valore' ma lo statement LIKE ...

    campo Like '%$valore%'

    Cioe' qualunque cosa prime e dopo a $valore. Se $valore contiene % allora trova TUTTI i campi. Tanto vale non metterlo.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    L'idea era proprio che per quella specifica chiave trovasse tutti i record, a meno che non fosse valorizzata, quindi {corso1}, per esempio sarà uguale a $valore se inserisco $valore, ma se non inserisco un dato risulterà uguale a %, quindi quella ricerca verrà ignorata.

  8. #8
    Ok, alla fine ho capito cosa dicevi, il syntax error (non l'unico) era nella necessità di mettere gli apici. Grazie.

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.