使用 2 GROUP_CONCAT 安全吗?

Is using 2 GROUP_CONCAT safe?

我有一个巨大的加入,用于商店产品。 我想列出我的产品展示

  1. delivery_formats(网络广播、音频、DVD)
  2. price_ids(唯一记录 ID)
  3. 价格(实际商品cost/price)

为了将这些数据组合在一起,我决定通过使用 GROUP_CONCAT 的 3 个实例来使用 3 个数组,如下所示:

GROUP_CONCAT(DISTINCT price.Id SEPARATOR ',') as price_ids,
GROUP_CONCAT(DISTINCT price.Price__c SEPARATOR ',') as prices,
GROUP_CONCAT(DISTINCT price.Delivery_Format__c SEPARATOR ',') as delivery_formats

这是完整的查询:

select field, field, field,GROUP_CONCAT(DISTINCT price.Id SEPARATOR ',') as price_ids,GROUP_CONCAT(DISTINCT price.Price__c SEPARATOR ',') as prices,GROUP_CONCAT(DISTINCT price.Delivery_Format__c SEPARATOR ',') as delivery_formats
from db.ats_store_package__c package
left JOIN db.ats_store_package_meta_tag__c package_meta ON package_meta.ATS_Store_Package__c = package.Id
left JOIN db.ats_store_price__c price ON price.ATS_Store_Package__c = package.Id
left JOIN db.meta_tag__c meta ON meta.Id = package_meta.Meta_Tag__c
left JOIN db.ats_store_package_session__c store_package_session ON store_package_session.ATS_Store_Package__c = package.Id
left join db.ats_conference_session_presentation__c sp on sp.ATS_Conference_Session__c = store_package_session.ATS_Conference_Session__c
where package.Is_Active__c = 1 group by package.Package_Code__c order by package.Sort_Order__c

在 php 中,我将这 3 个字符串(价格、price_ids、delivery_formats)分解为 3 个单独的数组。

我在 3 个数组 remain/be 中的项目会根据它们的 price.Id 同步吗? 我在同一行的 3 个阵列会保持同步吗?就个人而言,我有 99% 的把握, 但我想听听你的意见。

假设您的所有属性 IdPrice__cDelivery_Format__c 具有相同的 "distictiveness",这意味着它们都以完全相同的计数存在,那么:是的。如果不是:否。您的三个数组的索引很可能不同。

如果您删除 DISTINCT 关键字,情况就会不同,那么我会以更简单的方式说 "Yes"。 :)

我最终的决定是分别查询每个产品的价格。 尝试在 1 个大查询中完成所有操作时,不值得潜在的噩梦。