Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Dimenticanza SQL: uso di IN

    salve,

    non mi ricordo + un costrutto. Io devo prendere tutti dei record che abbiano il riferimento di un campo presente in un altra tabella

    select * from tabella where id in (select * from altratabella a where a.id=id)

    è corretta?

    oppure devo usare exists?

  2. #2
    codice:
    select * 
      from tabella where id in 
        (
          select id from altratabella a where a.id = id
        )
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  3. #3
    [DOPPIO]
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  4. #4
    in pratica così prendo tutti gli elementi della prima tabella che hanno l'id uguale ad uno qualsiasi che sta in un sotto gruppo dell'altra tabella, giusto?

  5. #5
    Esatto.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  6. #6
    grazie mille ho avuto un momento di mancanza di memoria di sql

  7. #7
    Capita.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  8. #8
    forse la mia dimenticanza è continua. Mi da errore la query con questa aggiunta:

    codice:
    sql1=sql1 & " and cam.[id-localita] in (select * from localita l1 where l1.[id-luogo]=" & idluogo & " and l1.id=cam.[id-localita])"
    mi da questo errore

    codice:
    È stata scritta una sottoquery che può restituire più campi senza utilizzare la parola riservata EXISTS nella proposizione FROM della query principale. Modificare l'istruzione SELECT nella sottoquery per richiedere soltanto un campo.

  9. #9
    mi sa che ho risolto. ho usato solo exists

    ciazo

  10. #10
    EXISTS è simile ad IN.
    Però rispetto ad IN è più performante quando devi scorrere dati abbastanza numerosi (noi la usiamo molto su Oracle).

    E comunque a te dava errore perchè avevi scritto:

    codice:
    select * 
      from tabella where id in 
        (
          select * from altratabella a where a.id = id
        )
    mentre io ti avevo corretto così:

    codice:
    select * 
      from tabella where id in 
        (
          select id from altratabella a where a.id = id
        )
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

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.