- Home
- Categorie
- Coding e Sistemistica
- Coding
- Select di più tabelle per confrontare un campo
-
Select di più tabelle per confrontare un campo
Buonasera, volevo chiedere se qualcuno mi può aiutare su un punto che in generale non mi è ben chiaro, ossia quello di eseguire un select su più tabelle per confrontare un campo che è presente in tutte le tabelle. Nel mio caso si tratta del campo 'data'.
In particolare sto cercando di far comparire nella home page del mio sito le ultime 10 schede-prodotto inserite nel sito, estraendole dalle varie tabelle in base alla data più recente. Tutte le mie tabelle sono formate dai medesimi campi, ogni tabella si distingue solo dalla tipologia del prodotto.
Il mio problema è proprio che devo confrontare le date tra tutte le tabelle e non solo in una, come faccio di seguito:
[php]
require ("db/db.php");
$lastinserted = mysql_query("SELECT img,link,numclick,descrizione,ordine FROM $table1 ORDER BY data DESC, ordine LIMIT 0,1",$link);
while ($row = mysql_fetch_array($lastinserted, MYSQL_NUM)) {
printf("<div class='grid_8'><div class='screen'>%s</div><div class='text'><h2>%s<span class='visite'> - %s visite</span></h2> %s</div></div>", $row[0], $row[1], $row[2], $row[3]);
}
mysql_free_result($lastinserted);
mysql_close($link);
[/php]In questo modo ottengo l'ultima inserita di una tabella.
Avevo pensato all'utilizzo di JOIN, ma primo non so se è la soluzione e secondo non ne ho capito molto la logica?Non so se mi sono spiegato, spero che qualcuno mi sappia suggerire su come fare!
Grazie 1000

-
Ciao supadema,
se devi unire più tabelle devi usare il JOIN, trovi qui qualche esempio di utilizzo:
dev.mysql.com/doc/refman/5.0/en/join.html
-
Il problema è che non riesco a capire come devo adattare la join al mio caso:
ho provato a mettere giù una bozza di codice da cui partire, ma non ho veramente idea
[php]
$lastinserted = mysql_query("SELECT img.t1,link.t1,numclick.t1,descrizione.t1,ordine.t1,data.t1,
img.t2,link.t2,numclick.t2,descrizione.t2,ordine.t2,data.t2,
img.t3,link.t3,numclick.t3,descrizione.t3,ordine.t3,data.t3
FROM t1,t2,t3 WHERE data = MAX(data) as maxdate ORDER BY data DESC, ordine LIMIT 0,5",$link);
[/php]so che è sbagliato ma non riesco a elaborare niente di meglio

-
ok ho risolto, dopo lunghe ricerche ho capito che nel mio caso dovevo usare 'union all' invece di 'join'...
grazie comunque
