无法从 LEFT JOIN(2 个表)中检索值

Adr*_*ase 3 mysql

这是我的查询:

$query_products = "
SELECT 
    p.Id
    , p.product_sku
    , p.product_name
    , p.hide_product
    , p.new_style_image
    , p.ext
    , p.product_thumb_image
    , p.product_full_image
    , SUM(s.stoc_final)
    , s.active 
FROM 
    produse p 
    LEFT JOIN stoc_intern s ON p.product_sku=s.cod_website 
WHERE 
    (
        (" . $product_sku_search . ") 
        OR (" . $product_name_search . ") 
        OR ("  .$product_culoare_search . ")
    ) 
    AND p.hide_product != 'd' 
GROUP by p.product_sku 
ORDER BY SUM(s.stoc_final) DESC 
LIMIT " . $items_per_page . " 
OFFSET " . $_offset . "";
Run Code Online (Sandbox Code Playgroud)

我的问题是:我选择的最后一个字段,即 s.active 字段,在表中的值是“n”,但是当我显示它时,它显示为空 ( echo $s_active);如果我s.active用 other field更改字段s.description,它将起作用。

此外,在“ stoc_intern”表中,我选择的某些字段显示良好,有些不显示(即使表数据包含信息)。

这是为什么?

Shl*_*ach 5

a_horse_with_no_name 已经提供了答案。

但是要禁用这个“没人能真正理解的那些愚蠢的 MySQL“功能之一”,您可以sql_mode对其进行更严格的设置。考虑my.cnf配置文件中的以下设置:

[mysqld]
sql_mode = ONLY_FULL_GROUP_BY
Run Code Online (Sandbox Code Playgroud)

请参阅文档。这将不允许您引用非分组列,除非使用聚合函数。