|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2001
Città: Lecce
Messaggi: 3936
|
[sql] query
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? |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: May 2003
Messaggi: 283
|
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
__________________
/*** * Nulla è impossibile per chi non deve farlo ***/ |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Divi fare una query mettendo poi GROUP BY Classe (se si chiama così il campo)!
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Dec 2001
Città: Lecce
Messaggi: 3936
|
Quote:
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 |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
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: Codice:
$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);
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Dec 2001
Città: Lecce
Messaggi: 3936
|
Quote:
grazie |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Dec 2001
Città: Lecce
Messaggi: 3936
|
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? |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Devi fare il join fra le due tabelle...
Questo va così: order by comune desc limit 0,5 |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Dec 2001
Città: Lecce
Messaggi: 3936
|
Quote:
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 |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ma se fai così fai il prodotto fra le due tabelle...
Il campo Comune esiste in tutte e due le tabelle ? |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Dec 2001
Città: Lecce
Messaggi: 3936
|
Quote:
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 |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
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... |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:51.



















