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

    [myqsl] Unire 3 query in una sola

    Ho un campo in una tabella, di cui mi interessa la cardinalità a seconda del tempo:

    SELECT COUNT(campo) AS a FROM tabella WHERE time<x
    SELECT COUNT(campo) AS b FROM tabella WHERE time>x AND time<y
    SELECT COUNT(campo) AS c FROM tabella WHERE time>y


    Queste tre query restituiscono i valori di a, b e c.
    Vorrei semplificare il tutto ad una sola query.

    Ho provato questo sistema:
    Codice PHP:
    $a 0;
    $b 0;
    $c 0;
    SELECT time FROM tabella
    if ($time $x$a++;
    elseif (
    $time $x && $time $y$b++;
    elseif (
    $time $y$c++; 
    che fa calcolare il count a PHP ma non è una buona soluzione e per alte quantità è molto più lento delle 3 query.

    È possibile risolvere con un'unica query?
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  2. #2
    SELECT COUNT(campo) FROM tabella WHERE (time<x) OR (time>x AND time<y) OR (time>y)

    una cosa del genere...? non garatisco che funzioni però...
    GdR Online - http://lenar.it/
    Yesterday is history. Tomorrow is mystery.
    Today is a gift. That's why it's called the present

  3. #3
    La query che hai scritto restituisce un unico risultato.
    Inoltre non serve a nulla perché restituisce quello che restituisce una query senza alcuna clausola WHERE.
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  4. #4

    ciao

    skusa il disturbo xo potresti guardare il mio topic e kontrollare?

  5. #5

    Re: ciao

    Originariamente inviato da Shokkato
    skusa il disturbo xo potresti guardare il mio topic e kontrollare?
    O.o



    Scusami, avevo capito male...se t servono tre risultati ti conviene cmq fare 3query...
    GdR Online - http://lenar.it/
    Yesterday is history. Tomorrow is mystery.
    Today is a gift. That's why it's called the present

  6. #6
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478

    Re: [myqsl] Unire 3 query in una sola

    Originariamente inviato da emanueledg
    Ho un campo in una tabella, di cui mi interessa la cardinalità a seconda del tempo:

    SELECT COUNT(campo) AS a FROM tabella WHERE time<x
    SELECT COUNT(campo) AS b FROM tabella WHERE time>x AND time<y
    SELECT COUNT(campo) AS c FROM tabella WHERE time>y


    Queste tre query restituiscono i valori di a, b e c.
    Vorrei semplificare il tutto ad una sola query.

    Ho provato questo sistema:
    Codice PHP:
    $a 0;
    $b 0;
    $c 0;
    SELECT time FROM tabella
    if ($time $x$a++;
    elseif (
    $time $x && $time $y$b++;
    elseif (
    $time $y$c++; 
    che fa calcolare il count a PHP ma non è una buona soluzione e per alte quantità è molto più lento delle 3 query.

    È possibile risolvere con un'unica query?
    http://dev.mysql.com/doc/refman/5.1/en/union.html (con versioni MySQL adatte)

  7. #7

    niedaaaaaaa

    tu che 6 bravo con il php & mysql passa dal mio TOPIC e urgente

  8. #8
    Ci provo ...
    codice:
    SELECT (SELECT COUNT(campo) FROM tabella WHERE time<x) AS a,
               (SELECT COUNT(campo) FROM tabella WHERE time>x AND time<y) AS b,
               (SELECT COUNT(campo) FROM tabella WHERE time>y) AS c
    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  9. #9

    Re: Re: [myqsl] Unire 3 query in una sola

    Originariamente inviato da neida
    http://dev.mysql.com/doc/refman/5.1/en/union.html (con versioni MySQL adatte)
    ecco:-) una buona funzione...ma ottimizza anche le prestazioni o è solo questione di scrivere meno?
    GdR Online - http://lenar.it/
    Yesterday is history. Tomorrow is mystery.
    Today is a gift. That's why it's called the present

  10. #10
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Una regola fondamentale nell'ottimizzazione delle query consiste nel lasciare eseguire tutto il lavoro possibile al server MySQL (liberando il carico del PHP) facendo il "minor numero possibile" di query. Quindi, a prescindere dal valore più o meno alto in termini di prestazioni, se si dispone di una versione MySQL (>= 4.0) compatibile con l'uso della funzione UNION converrebbe comunque utilizzarla.

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