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

    [MySQL] LIKE su subquery

    Ciao a tutti,
    ho due tabelle:
    - la prima contiene, tra le varie cose, l'anno di esercizio in corso;
    - la seconda contiene, tra le varie cose, un campo data.

    Ora, io ho bisogno di leggere in valore massimo tra gli anni dalla prima tabella, e cercare questo valore nel campo data della seconda tabella.
    Vi scrivo il codice che avevo pensato, e che ovviamente non funziona:

    codice:
    SQL="SELECT * FROM tabella2 WHERE data LIKE '(SELECT anno FROM tabella1 ORDER BY anno DESC)%'"
    Dove sbaglio secondo voi?
    Grazie.

    Marco

  2. #2
    Ho 3 osservazioni:

    1) Controllla che nella tua versione di MySQL siano ammesse le subquery;

    2) Stai confrontando delle date, cioè valori definiti, togli quel LIKE dalla query ed imponi il vincolo di uguaglianza;

    3) Ma nn fai prima ad usare una query con JOIN delle due tabelle tipo:

    Select * from Tab2 JOIN TAB1 Where tab2.data = TAB1.anno;

    Fammi sapere,
    ciao.
    Ci sono 10 categorie di persone al mondo: chi capisce il codice binario e chi no!

  3. #3
    Originariamente inviato da Tartufo 1) Controllla che nella tua versione di MySQL siano ammesse le subquery;
    Ci sono.

    Originariamente inviato da Tartufo 2) Stai confrontando delle date, cioè valori definiti, togli quel LIKE dalla query ed imponi il vincolo di uguaglianza;
    A parte che da manuale SQL (e MYSQL) la ricerca con like è concessa sulle date, tant'è che se metto direttamente "LIKE '2007'" la ricerca va a buon fine... comunque i due campi sono diversi, uno è un numerico con l'anno e basta, mentre l'altro è un campo data (quindi anno-mese-giorno).

    Originariamente inviato da Tartufo 3) Ma nn fai prima ad usare una query con JOIN delle due tabelle tipo:
    Select * from Tab2 JOIN TAB1 Where tab2.data = TAB1.anno;
    Vedi sopra, sono due campi diversi.

    Partendo dal fatto che io conosco l'anno, ho bisogno di cercare i record con la data attribuibile a quell'anno... se faccio una query semplice mettendo io il valroe funziona, se invece faccio una subquery (per inciso, il risultato della subquery provata da sola è correttamente "2007") si verifica l'errore.

    Altre idee?

    Marco

  4. #4
    Originariamente inviato da Lookdown
    Partendo dal fatto che io conosco l'anno, ho bisogno di cercare i record con la data attribuibile a quell'anno... se faccio una query semplice mettendo io il valroe funziona, se invece faccio una subquery (per inciso, il risultato della subquery provata da sola è correttamente "2007") si verifica l'errore.

    Altre idee?

    Marco
    anno = year(data)

    diventano uguali

    codice:
    Select * from tab1 
    INNER JOIN tab2 ON tab1.anno = YEAR(tab2.data)
    order by tab1.anno desc

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

  5. #5
    Originariamente inviato da piero.mac
    anno = year(data)
    diventano uguali
    Perfetto, denghiu.

    Marco

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.