Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Query con join, help

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    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

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    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)
    ....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.