Quote Originariamente inviata da Madsex Visualizza il messaggio
Bhe è proprio quello il problema,in stock_available ci sono effettivamente più record con p.id_product = sa.id_product ma l'id product è l'unico che posso usare per associare la tabella precedente con stock_available. Di fatto però a me serve un'unico record, quello che, in stock_available ha "quantity" più alta di tutti.

Ho risolto così:

codice:

codice:
$sql= "SELECT *, p.price FROM "._DB_PREFIX_."product p";
$sql.= " LEFT JOIN "._DB_PREFIX_."product_lang pl ON(p.id_product = pl.id_product) ";
$sql.= " LEFT JOIN "._DB_PREFIX_."tax t ON(p.id_tax_rules_group = t.id_tax)";
$sql.= " LEFT JOIN "._DB_PREFIX_."specific_price sp ON(p.id_product = sp.id_product)";
$sql.= " LEFT JOIN (SELECT* FROM "._DB_PREFIX_."stock_available GROUP BY id_product) as sa ON(p.id_product = sa.id_product)";
$sql.= " WHERE p.active = '1' AND sa.quantity > '0'";
$sql.= " ORDER BY p.date_add DESC, p.id_product DESC LIMIT $limit $offset";


Mi pare che funzioni correttamente ma vorrei un parere, come detto sono un bel po' niubbo sulle join.

Grazie in anticipo
onestamente avrei qualche perplessita' sul corretto funzionamento....ma se tu hai testato, allora è ok. Tuttavia io proverei qualcosa del genere

....
LEFT JOIN (SELECT * FROM "._DB_PREFIX_."stock_available where stock_available.id_product=p.id_product order by stock_available.quantity asc LIMIT 1) as sa ON (1=1)
....