View Full Version : [sql] query
DarkSiDE
05-02-2004, 17:23
ho un db che contiene l'elenco degli studenti di un istituto, con una struttura di questo genere:
nome cognome classe
dovrei interrogare il db in modo che mi restituisca come titolo il nome della classe e l'elenco degli studenti, per tutte le classi del db:
III A
- pippo
- pluto
II B
- topolino
- cionci
io avevo pensato di mettere query in un ciclo, per ogni classe mi faccio restituire tutti gli alunni, idee migliori?
Icedguardian
05-02-2004, 18:11
Non so dove devi usarlo ma se puoi fare un ciclo allora ti fai restituire tutte le info ordinate per classe, appena nel ciclo ti accorgi che la classe è cambiata stampi un nuovo titolo.
Ciao
Divi fare una query mettendo poi GROUP BY Classe (se si chiama così il campo)! :)
DarkSiDE
05-02-2004, 19:28
Originariamente inviato da matpez
Divi fare una query mettendo poi GROUP BY Classe (se si chiama così il campo)! :)
SELECT *
FROM `studenti` group by classe
ricordavo bene che c'era un modo più "semplice"..
il prob è che così mi restituisce solo un elemento per ogni classe
:confused:
SELECT * FROM Studenti ORDER BY classe, cognome, nome;
Basta una sola query senza ciclo (a parte il ciclo per scorrere il recordset)....
Semplicemente per riconsocere che hai già scritto tutti gli studenti di quella classe scrivi:
$query = "SELECT * FROM Studenti ORDER BY classe, congnome, nome;";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result)
$prec = "";
while ($row = mysql_fetch_assoc($result))
{
if($prec != $row["classe"])
{
echo "<strong>".$row["classe"]."</strong><br>";
$prec = $row["classe"];
}
echo $row["cognome"]." ".$row["nome"]."<br>";
}
mysql_free_result($result);
Grazie per la citazione ;)
DarkSiDE
06-02-2004, 10:26
Originariamente inviato da cionci
SELECT * FROM Studenti ORDER BY classe, cognome, nome;
Basta una sola query senza ciclo (a parte il ciclo per scorrere il recordset)....
Semplicemente per riconsocere che hai già scritto tutti gli studenti di quella classe scrivi:
$query = "SELECT * FROM Studenti ORDER BY classe, congnome, nome;";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result)
$prec = "";
while ($row = mysql_fetch_assoc($result))
{
if($prec != $row["classe"])
{
echo "<strong>".$row["classe"]."</strong><br>";
$prec = $row["classe"];
}
echo $row["cognome"]." ".$row["nome"]."<br>";
}
mysql_free_result($result);
Grazie per la citazione ;)
l'anno scorso me la cavavo discretamente conl'sql, ora mi trovo ridotto a fare domande di questo genere..vabbè :rolleyes:
grazie
DarkSiDE
19-02-2004, 11:11
ho più tabelle che hanno un campo comune, devo visualizzare cinque record che hanno il maggior valore in questo campo
select nome
from tab1, tab2
order by comune limit desc 0,5
ovviamente nn va..c'è qlc che mi sfugge vero? :p
Devi fare il join fra le due tabelle...
Questo va così:
order by comune desc limit 0,5
DarkSiDE
19-02-2004, 13:57
Originariamente inviato da cionci
Devi fare il join fra le due tabelle...
Questo va così:
order by comune desc limit 0,5
per l'order ho fatto confusione..
ma scusa per quanto riguarda il join: nn c'è alcuna relazione fra le due tabelle, devo solo elencare tutti i valori di "comune" e prendere i 5 con il valore maggiore
Ma se fai così fai il prodotto fra le due tabelle...
Il campo Comune esiste in tutte e due le tabelle ?
DarkSiDE
19-02-2004, 14:19
Originariamente inviato da cionci
Ma se fai così fai il prodotto fra le due tabelle...
Il campo Comune esiste in tutte e due le tabelle ?
ho due tabelle: classe1 e classe2
nn vi sono relazioni fra le due, hanno in comune il campo nome e il campo votazione, io devo visualizzare i 5 nomi con la votazione più alta, prendendo entrambe le tabelle
Sei sempre ocn mysql, vero ? Allora non supporta le subquery...
Allora devi fare due select e mettere in un vettore i primi 5 di ogni tabella...poi ordini il vettore (con sort) e prendi i primi 5...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.