使用2 GROUP_CONCAT安全吗?

时间:2016-01-05 16:35:28

标签: php mysql arrays group-concat

我有很大的商店产品加入。 我想列出我的产品展示

  1. delivery_formats(网播,音频,DVD)
  2. price_ids(唯一记录ID)
  3. 价格(实际项目成本/价格)
  4. 为了将这些数据组合在一起,我决定使用3个GROUP_CONCAT实例来使用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,price_ids,delivery_formats)分解为3个独立的数组。

    3个数组中的项目是否会根据价格保持/同步.Id? 同一行上的3个阵列是否会保持同步?就个人而言,我99%肯定, 但是我想听听你的意见。

2 个答案:

答案 0 :(得分:1)

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

如果您要删除DISTINCT关键字,那将是一个不同的故事,然后我会以更简单的方式说“是”。 :)

答案 1 :(得分:0)

我的最终决定是分别查询每种产品的价格。 当尝试在一个大问题中做所有事情时,它不值得潜在的噩梦。