Ciao,
scusa se ti rispondo solo ora ma ieri ho avuto un lavoro urgente e non ho potuto seguire il forum.
Avevo commesso un piccolo errore, ora ho avuto il tempo di testare il codice seguente e ti assicuro che sotto mysql funziona.
Ora ti spiego passo per passo questo codice sql:
Codice PHP:
create table offerte (
id_offerte INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
off VARCHAR(255)
);
INSERT INTO offerte (off) VALUES ('a');
INSERT INTO offerte (off) VALUES ('b');
INSERT INTO offerte (off) VALUES ('c');
create table periodi (
id_periodi INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
id_offerte INT NOT NULL,
per INT NOT NULL
);
INSERT INTO periodi (id_offerte, per) VALUES (1, 100);
INSERT INTO periodi (id_offerte, per) VALUES (2, 50);
INSERT INTO periodi (id_offerte, per) VALUES (2, 80);
INSERT INTO periodi (id_offerte, per) VALUES (3, 150);
INSERT INTO periodi (id_offerte, per) VALUES (3, 120);
Mi sono creato due tabelle simili a quelle che usi tu e le ho riempite con alcuni dati
Codice PHP:
SELECT MIN(per) FROM periodi GROUP BY id_offerte
Questa query ti restituisce tutti i valori minimi del campo "per" della tabella "periodi" raggruppandoli secondo il campo "id_offerte". Mi spiego meglio, Il GROUP BY si occupa di suddividere la tabella "periodi" in 3 gruppi (un gruppo contiene i periodi con id_offerte=1, un gruppo contiene i periodi con id_offerte=2, e... cosi via ) mentre il MIN(per) prende, da ogni gruppo creato con GROUP BY, il valore di "per" più piccolo.
Codice PHP:
SELECT o.off AS nomeofferta, MIN(p.per) AS minperiodo FROM periodi p, offerte o WHERE o.id_offerte=p.id_offerte GROUP BY p.id_offerte;
Questa query invece è una elaborazione di quella superiore, il principio di base è lo stesso ma è stato inserito il nome delle offerte.
"p" e "o" sono dei nomi che vengono usati internamente alla query per identificare univocamente i campi che hanno lo stesso nome (nell'esempio il campo id_offerte si chiama nello stesso modo in entrambe le tabelle).
"nomeofferta" e "minperiodo" sono invece dei nomi arbitrari che si assegnano per essere usati poi nel codice PHP.
Il codice PHP per visualizzare tale query può essere il seguente:
Codice PHP:
$sql = "SELECT o.off AS nomeofferta, MIN(p.per) AS minperiodo FROM periodi p, offerte o WHERE o.id_offerte=p.id_offerte GROUP BY p.id_offerte";
$res = mysql_query($sql);
if($res) {
if(mysql_num_row($res)>0) {
while($riga=mysql_fetch_array($res)) {
echo $riga["nomeofferta"]." ".$riga["minperiodo"]."</br>\n";
}
}
}
E' tutto
Spero di aver chiarito i tuoi dubbi.
Ciao
Akito