-
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.
-
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;
-
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...
-
:?: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> <?php echo $row2['nome']; ?></td>
<td> <?php echo $row2 ['abitante']; ?></td>
<td> <?php echo $row2 ['eta']; ?></td>
<td> <?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.
-
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...
-
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.