Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18

Discussione: query mysql complicata

  1. #1

    query mysql complicata

    Ciao a tutti,
    ho un database con i campi (A,B,C)

    dovrei estrapolare dal database i dati nel seguente modo:
    record 1: a="SI", b="SI", c="NO"
    record 2: a="SI", b="NO", c="SI"
    record 3: a="SI", b="SI", c="SI"

    praticamente il risultato che vorrei è:
    record1
    record2
    record3
    record1
    record3
    record2
    record3

    e come record count 7.

    Praticamente mi deve estrapolare più di una volta lo stesso record in base al valore che hanno A,B,C nel senso che ogni volta che A,B,C sono uguali a "SI" il record deve essere recuperato.

    E' fattibile? ... credo di si, come?

    Fatemi sapere.
    Grazie mille.

  2. #2

  3. #3
    where a="si" or b="si" or c="si" order by a desc,b desc, c desc

  4. #4
    No, così mi prende i 3 record ma una sola volta.
    Ciò che serve a me e che prenda lo stesso record più di una volta.
    Come ho scritto nell'esempio:
    record1
    record2
    record3
    record1
    record3
    record2
    record3

    record 1 viene preso 2 volte perchè 'a' e 'b' sono uguali a "SI"
    record 2 viene preso 2 volte perchè 'a' e 'c' sono uguali a "SI"
    record 3 viene preso 3 volte perchè 'a', 'b' e 'c' sono uguali a "SI"

    e di conseguenza record count ha volore 7 (2+2+3)

    E' un pò più complicato di come mi hai indicato tu...

    Come devo impostare la query?

  5. #5
    Questo è il codice che stavo provando io che teoriacamente mi sembra funzionante ma in pratica mi prende sempre e solo 3 record:
    codice:
    strq = "select * from (select * from casa where abilitato='S' and lmgiugno='S' order by areadiriferimento, posizione, nome)t1" 
    strq = strq & " UNION select * from (select * from casa where abilitato='S' and lmluglio='S' order by areadiriferimento, posizione, nome)t2"
    strq = strq & " UNION select * from (select * from casa where abilitato='S' and lmagosto='S' order by areadiriferimento, posizione, nome)t3"
    strq = strq & " UNION select * from (select * from casa where abilitato='S' and lmsettembre='S' order by areadiriferimento, posizione, nome)t4"

  6. #6

  7. #7
    allora immagino che A deve rimanere fisso= a si e devono variare gli altri due?


    ma lmluglio/agosto/settembre sono tutti campi dello stesso record giusto?

    scusa where a="si" and (b="si" or c="si") restituisce:

    a b c
    si si no <--primo rec
    si si si <--seco rec
    si no si <--terzo rec


    per logica... devi solo scrivere bene a="si" b="si" c="si" che cosa vuol dire nella tua tabella

  8. #8
    La questione è più complicata:
    a me servirebbe che la query mi selezionasse i record e mandandoli a video mi desse:
    record1
    record2
    record3
    record1
    record3
    record2
    record3

    Non mi serve avere solo
    record1
    record2
    record3

    per avere questo potrei fare, come hai scritto prima tu:
    codice:
    where a="si" or b="si" or c="si" order by a desc,b desc, c desc
    ... se riportato all'esempio vero sostituiremo a,b,c,d, con lmgiugno, luglio ecc...

    Mi sto spiegando? ... forse male!!

  9. #9
    cioè ti server una query che ti restituisca una recordset del tipo:

    si si no
    si no si
    si si si
    si si no
    si si si
    si no si
    si si si




    ma la logica della struttura esiste? ci sono due case che hanno recordset1/2/3 in comune? oppure è la stessa casa che deve apparire piu volte?

  10. #10
    Perfetto, è la stessa casa che deve apparire più volte!!
    Nel database ho le case con con nome casa1, casa2, casa3

    ma possono comparire entrambe più di una volta. Quindi dall'estrazione devo avere ad esempio:

    casa1
    casa2
    casa3
    casa2
    casa3
    casa1
    casa3

    Questo in base ai SI e NO dei vari lmgiugno, lmluglio eccc....


    Forse ci siamo capiti!!
    E' fattibile?

    ... sto iniziando a risolvere tutto con un array (così ce la posso fare) solo che mi sembra assurdo che tramite una query ben impostata non si possa risolvere il problema.
    Il metodo con array è abbastanza lungo e poco fluido anche se potrebbe portarmi allo stesso risultato!!

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.