使用 2 GROUP_CONCAT 安全吗?
Is using 2 GROUP_CONCAT safe?
我有一个巨大的加入,用于商店产品。 我想列出我的产品展示
- delivery_formats(网络广播、音频、DVD)
- price_ids(唯一记录 ID)
- 价格(实际商品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% 的把握, 但我想听听你的意见。
假设您的所有属性 Id
、Price__c
和 Delivery_Format__c
具有相同的 "distictiveness",这意味着它们都以完全相同的计数存在,那么:是的。如果不是:否。您的三个数组的索引很可能不同。
如果您删除 DISTINCT
关键字,情况就会不同,那么我会以更简单的方式说 "Yes"。 :)
我最终的决定是分别查询每个产品的价格。 尝试在 1 个大查询中完成所有操作时,不值得潜在的噩梦。