Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    44

    [MYSQL] Select sulla stessa tabella

    Immagine.png

    Salve, ho questa tabella. In una singola query ho la necessità di prelevare il min e il max in base a diversi livelli.
    Eseguendo singole query dovrei fare:

    Codice PHP:
    $this->query("SELECT min, max FROM table WHERE level = :lv"); (:lv assume valore 1) (esempio)
    $this->query("SELECT min, max FROM table WHERE level = :lv"); (:lv assume valore 3) (esempio)
    ect 
    E quindi poi con il php so che per un determinato livello ho il min e il max.

    In poche parole vorrei realizzare tutto in una singola chiamata, perchè devono essere richiamati sempre 5 livelli fissi che ovviamente possono variare, e quindi ho optato per questa soluzione:

    Codice PHP:
    $this->query("SELECT i.max AS valoremax1, i.min AS valoremin1, f.max  AS valoremax2, f.min AS valoremin2, c.max AS valoremax3, c.min AS  valoremin3
    FROM table AS i
    INNER JOIN table AS f
    ON i.code = f.code
    INNER JOIN table AS c
    ON i.code = c.code
    WHERE i.level = :valore1 AND f.level = :valore2 AND c.level = :valore3

    ect ect"
    ); 
    Per funzionare funziona, ho dovuto inserire il campo "code" per collegarle, ma in pratica non mi serve a nulla quel campo.

    Altri modi più puliti o migliori potreste consigliarmeli?

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    44
    Quote Originariamente inviata da optime Visualizza il messaggio
    min e max con group by sul livello
    senza join?

  4. #4

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    44
    Quote Originariamente inviata da optime Visualizza il messaggio
    prova
    Codice PHP:
    SELECT maxmin
    FROM table 

    WHERE level 
    = :valore1 AND level = :valore2 AND level = :valore3

    GROUP BY level 
    Non mi è molto chiaro come procedere, così sicuramente non funziona

  6. #6

  7. #7
    togli pure il GROUP BY, vista la tabella non serve. Occhio che MIN e MAX sono parole riservate!

  8. #8
    invece di OR puoi usare IN

    SELECT Level, Min, Max FROM Tabella WHERE level in (1,3,7)

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    44
    Quote Originariamente inviata da optime Visualizza il messaggio
    invece di OR puoi usare IN

    SELECT Level, Min, Max FROM Tabella WHERE level in (1,3,7)
    Per quello che devo fare non funziona.
    O per lo meno non mi è chiaro poi nel codice php come faccio a sapere i vari valori per ogni gruppo di livello.

    ammettiamo che il metodo si chiami prova

    nella query normale per avere i valori faccio prova->min e prova->max e ottengo i valori per quel livello.
    Nell'esempio da te mostrato come faccio a sapere?

  10. #10
    scusa, ma non riesco a capire. Spiega meglio il problema, con anche qualche esempio, grazie

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 © 2020 vBulletin Solutions, Inc. All rights reserved.