• Moderatore

    Query per ricavare valori da "scelta multipla" o soluzione PHP

    Ciao a tutti, il titolo del tread è quantomeno dubbio perchè farei fatica a spiegarlo anche a voce. Ci provo.
    Devo ricavare valori con una query che mette in JOIN più tabelle.
    Dalla tabella "base" ricavo alcune informazioni sull'id che mi interessa e da li faccio partire il join alla tabella che mi interessa.
    La ricerca che devo eseguire deriva da una scelta multipla esclusiva. Per intenderci faccio un esempio.
    TAB FIRST
    id = 1 , nome = UNO
    id = 2 , nome = DUE
    id = 3 , nome = TRE

    TAB SECOND
    id = 1 , id_cli = 1 , id_ricerca = 10
    id = 2 , id_cli = 2 , id_ricerca = 3
    id = 3 , id_cli = 1 , id_ricerca = 3
    id = 4 , id_cli = 3 , id_ricerca = 5

    quando ho un solo valore da ricercare nessun problema
    SELECT * FROM FIRST INNER JOIN SECOND on FIRST.id=SECOND.id_cli WHERE SECOND.id_ricerca = 3
    risultato = DUE,UNO

    Il problema nasce quando voglio ricercare più id_ricerca contemporaneamente. Cioè se volessi in contemporanea avere quell' id_cli che possiede sia id_ricerca 10 che id_ricerca 3.

    Spero di essermi fatto capire.

    La soluzione che mi viene ora è quella di ricreare un array in PHP ch econtiene tutti gli ID con la loro id ricerca, per poi confrontarlo con il mio vettore di ricerche del programma. Fare il confronto tra vettori e solo di quelli "buoni" prendere gli id in un nuovo vettore e ridarli in pasto alla query.
    C'è modo di ovviare a questo immondo giro e fare tutto in una query?
    Grazie a tutti


  • User Attivo

    Non puoi fare una cosa tipo:

    SELECT * FROM FIRST INNER JOIN SECOND on FIRST.id=SECOND.id_cli WHERE SECOND.id_ricerca IN (1, 3, 5)

    Dove (1, 3, 5) te lo costruisci in base ai dati del form?


  • Moderatore

    Ciao e grazie, questa soluzione mi simulerebbe un OR, ma a me serve un AND tra gli elementi.