• User Attivo

    E' possibile creare un ciclo interno a SQL?

    Ciao,
    la mia domanda centrale è: esiste il modo di creare un ciclo direttamente in linguaggio SQL senza far uso di linguaggi di programmazione?

    Il mio problema è che devo estrare una query da MySQL ma tra le varie clausule WHERE ho anche questa:
    jos_sobi2_fields_data.itemid = (SELECT itemid FROM jos_sobi2_fields_data WHERE jos_sobi2_fields_data.data_txt = "ERRRA")

    e quello che è tra parentesi restituisce più di unr ecord, e infatti il PhpMyAdmin mi restituisce questo errore:
    #1242 - Subquery returns more than 1 row

    La mia idea era quella di aggiunger eun LIMIT:
    jos_sobi2_fields_data.itemid = (SELECT itemid FROM jos_sobi2_fields_data WHERE jos_sobi2_fields_data.data_txt = "ERRRA" LIMIT 0,1)
    (così funziona)
    e rendere dinamici i valori del LIMIT dentro un ciclo.. si può?

    Grazie infinite,
    ciao


  • User Attivo

    Ciao,
    ho trovato la risposta: l'utilizzo di "ANY" davanti alla subquery 🙂

    jos_sobi2_fields_data.itemid = ANY (SELECT itemid FROM jos_sobi2_fields_data WHERE jos_sobi2_fields_data.data_txt = "ERRRA")

    Se servisse a qualcuno..!

    ciauz!


  • User Attivo

    Ciao delizard,

    Così è più pulito:
    jos_sobi2_fields_data.itemid IN (SELECT itemid FROM jos_sobi2_fields_data WHERE jos_sobi2_fields_data.data_txt = "ERRRA")

    "IN" è uguale a "= ANY"


  • User Attivo

    Ok, grazie mille!
    Direi che così è perfetto 🙂