Visualizzazione risultati 1 fino 6 di 6

Discussione: limitare una query

  1. #1
    Guest

    Predefinito limitare una query

    Ho una tabella che contiene id nome abitante,età,citta.
    ordinata per città
    Vorrei estrarre da questa tabella tutti i records degli abitanti che abbiano una certa età e fin qui è facile ,ma vorrei limitare l' estrazione a non più di 10 records per città.E' possibile farlo con una select o e necessario ad esempio far intervenire il php e come ?.Se qualcuno mi aiuta ringrazio in anticipo.

  2. #2
    L'avatar di dapeco
    dapeco non è connesso Community Manager
    Data registrazione
    21-10-2003
    Residenza
    Brusasco (To)
    Messaggi
    4,909

    Predefinito

    LIMIT serve a limitare il numero di risposte. Ora non so come fare a limitare a 10 ogni città, ma si potrebbe provare con:

    Script php che preleva dalla tabella tutte le città, poi cicli per ogni città con la query:
    Codice:
    SELECT * FROM 'tabella' WHERE eta='anni' AND citta='citta' LIMIT 10;
    Ultima modifica di dapeco : 16-09-2008 alle ore 09.17.57
    Ho visto cose che voi utenti non potreste immaginare... siti da combattimento irregolari al largo dei bastioni di Orione. E ho visto account balenare nel buio vicino alle porte di Tannhauser. E tutti quei momenti andranno perduti nel tempo come lacrime nella pioggia. È tempo di sospendere...

    ASD Brusasco - C'è altro sport oltre al calcio!

    "Io sono vivo, voi siete morti" (Philip Dick, Ubik)

  3. #3
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Piccole precisazioni:
    - la clausola LIMIT, non essendo standard, funziona solo con MySQL (Access ha un altro metodo, quello di scrivere TOP 10 subito dopo SELECT)
    - la clausola LIMIT (o equivalente) funziona comunque, ma perché abbia un senso devi affiancarla a qualche criterio di ordinamento (se non c'è criterio, non c'è modo di stabilire quali record sono selezionati)

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  4. #4
    Guest

    Predefinito

    Ho provato così
    Codice PHP:
    <?php require_once('Connections/temp.php'); ?>
    <?php

    mysql_select_db
    ($database_temp, $temp);
    $sql = "SELECT id,nome, abitante,eta,citta FROM italia";
    $result= mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($result);


    ?>
    <html>
    <head>

    </head>

    <body>

    <?php while($row = mysql_fetch_assoc($result)){
    $citta=addslashes($row['citta']);
    mysql_select_db($database_temp, $temp);
    $sql2 = "SELECT id,nome, abitante,eta,citta FROM italia WHERE citta ='$citta' and eta='55' ORDER BY citta limit 10 ";
    $result2 = mysql_query($sql2) or die(mysql_error());
    $row2 = mysql_fetch_assoc($result2);
    }
    ?>

    <table width="140">
    <?php do { ?>
    <tr>
    <td>&nbsp;<?php echo $row2['nome']; ?></td>
    <td>&nbsp;<?php echo $row2 ['abitante']; ?></td>
    <td>&nbsp;<?php echo $row2 ['eta']; ?></td>
    <td>&nbsp;<?php echo $row2 ['citta']; ?></td>
    </tr>
    <?php } while ($row2 = mysql_fetch_assoc($result2)); ?>
    </table>
    </body>
    </html>
    non da errore ma non stampa e la query è lenta.
    Ultima modifica di dementialsite : 16-09-2008 alle ore 16.21.34

  5. #5
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Ci credo che non stampi nulla, stai eseguendo le query "a vuoto"... devi spostare la prima parentesi graffa chiusa dopo il ciclo che stampa la tabella (e in modo da includere il ciclo seguente, a proposito: usa sempre un ciclo while e non do-while, non dare per scontato che la sotto-query ti restituisca esattamente 10 risultati...).

    Stammi bene...
    Ultima modifica di dementialsite : 16-09-2008 alle ore 16.24.50
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  6. #6
    Guest

    Predefinito

    Avevi ragione ora con le tue modifiche stampa solo che non ottengo ciò che volevo.Ora ottengo
    9 risultati per il campo nome per la stessa città ma questi risultati si ripetono sempre fino ad esaurire tutti i records che contengono la stessa citta,poi ottengo altri 9 risultati con nomi diversi che si ripetono fino ad esaurire tutti i records della 2^ citta e così via..
    Comunque ho risolto mettendo "group by citta "nella prima select. Comunque il tuo contributo mi è stato utile grazie Dementialsite.
    Ultima modifica di lukio : 16-09-2008 alle ore 18.52.50

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •