Php mysql从与其他表相关的表返回结果

Php mysql从与其他表相关的表返回结果,php,mysql,joomla,Php,Mysql,Joomla,我试图显示与许多表相关的表的结果,但我的问题是,查询只返回一个特殊产品,我想返回的是特殊产品和非特殊产品。 我的Php查询是: $query = "SELECT DISTINCT p.product_id, p.price ,sp.date_end, f.percentage AS special_percentage , p.model, pd.name AS title, pd.description AS text, cd.name AS section, p.image, pd.tag,

我试图显示与许多表相关的表的结果,但我的问题是,查询只返回一个特殊产品,我想返回的是特殊产品和非特殊产品。 我的Php查询是:

$query = "SELECT DISTINCT p.product_id, p.price ,sp.date_end, f.percentage AS special_percentage , p.model, pd.name AS title, pd.description AS text, cd.name AS section, p.image, pd.tag, p.date_added AS created "
                ."FROM #__mijoshop_product AS p "
                ."JOIN #__mijoshop_product_special AS sp ON  p.product_id = sp.product_id "
                ."JOIN #__mijoshop_flordeco_product_special_percentage AS f ON sp.product_id = f.product_id "
                ."INNER JOIN #__mijoshop_product_description AS pd ON p.product_id = pd.product_id "
                ."LEFT JOIN #__mijoshop_product_to_store AS ps ON p.product_id = ps.product_id "
                ."LEFT JOIN #__mijoshop_product_to_category AS pc ON p.product_id = pc.product_id "
                ."LEFT JOIN #__mijoshop_category_description AS cd ON (pc.category_id = cd.category_id AND cd.language_id = {$language_id}) "
                ."LEFT JOIN #__mijoshop_category_to_store AS cs ON (pc.category_id = cs.category_id AND cs.store_id = {$store_id}) "
                ."WHERE (LOWER(pd.name) LIKE '%" . $search_text . "%' OR
                        LOWER(pd.description) LIKE '%" . $search_text . "%' OR 
                        LOWER(p.sku) LIKE '%" . $search_text . "%' OR ";

                        if( $model ) {
                            $query .= "LOWER(p.model) LIKE '%" . $search_text . "%' OR ";
                        }

                        $query .= "LOWER(pd.tag) LIKE '%" . $search_text . "%') "
                ."AND p.status = '1' "
                ."AND date(sp.date_end) >= date(NOW()) "
                ."AND p.date_available <= NOW() "
                ."AND ps.store_id = {$store_id} "
                ."AND pd.language_id = '" . $language_id . "' "
                ."GROUP BY p.product_id "
                ."ORDER BY {$order_by} "
                ."LIMIT ".$limit;

        $db->setQuery($query);
        $results = $db->loadObjectList();
将带有uuu mijoshop_product_special和uuu mijoshop_flordeco_product_special_percentage的联接更改为左联接,这样就不会将结果仅限于此表中具有匹配项的产品


另外,当您使用GROUP BY p.product_id时,不需要使用SELECT DISTINCT;因为每个产品ID只有一行,所以您无法获得任何副本。然而,当您不使用任何聚合函数(如SUM或COUNT)时,使用GROUPBY也没有意义。如果所有这些表都是1对1的对应关系,则您不应获得任何需要使用任一选项删除的重复项。

请提供最终构造的查询、示例数据、预期结果和当前结果。您的脚本存在以下风险:。了解。连绳子都不安全!这不是MySQL,它不为临时表使用前缀。我想那是SQL-Server。根据所使用的函数,我不太确定它是SQL-Servereither@Barmar是mysql和joomla