我有这个问题:
SELECT c.id, p.id, p.register_date, o.office_agency_name_1, a.street_address, a.supplemental_address_1, a.city, s.abbreviation, co.iso_code, a.postal_code, ph.phone, pf.phone, e.email,
ab.name, c.addressee_custom, (Select phone from civicrm_phone where contact_id = civicrm_contact.id AND is_billing = 1) as billing_phone
FROM civicrm_contact c,
civicrm_participant p,
civicrm_value_office_info_1 o,
civicrm_address a,
civicrm_state_province s,
civicrm_country co,
civicrm_phone ph,
civicrm_phone pf,
civicrm_email e,
civicrm_address ab
WHERE p.contact_id = c.id
AND p.is_test = 0
AND p.event_id = 1
AND p.status_id NOT IN (4,11,12)
AND ( c.is_deleted = 0 OR c.is_deleted IS NULL )
AND o.entity_id = c.id
AND a.contact_id = c.id
AND s.id = a.state_province_id
AND co.id = a.country_id
AND ph.contact_id = c.id
AND ph.is_primary = 1
AND pf.contact_id = c.id
AND pf.phone_type_id = 3
AND e.contact_id = c.id
AND e.is_primary = 1
AND ab.contact_id = c.id
AND ab.is_billing = 1
billing_phone是最近添加的...这当然不起作用并给我:
1054 - 未知专栏' civicrm_contact.id'在' where子句'
由于复杂性以及还有更多字段需要添加的事实,我希望尽可能避免使用JOIN,并尽可能接近当前语法。
当我尝试使用与其他手机相同的模式添加结算手机时,很明显并非所有人都拥有结算手机 - 行数急剧下降。
我希望将这项工作作为外部SELECT中的子查询(对于那些没有结算电话的行,我会得到NULL,对吧?)。
实际上,它也不能作为JOIN工作:
SELECT c.id, p.id, p.register_date, o.office_agency_name_1, a.street_address, a.supplemental_address_1, a.city, s.abbreviation, co.iso_code, a.postal_code, ph.phone, pf.phone, e.email,
ab.name, c.addressee_custom, pb.phone as billing_phone
FROM civicrm_contact c,
civicrm_participant p,
civicrm_value_office_info_1 o,
civicrm_address a,
civicrm_state_province s,
civicrm_country co,
civicrm_phone ph,
civicrm_phone pf,
civicrm_email e,
civicrm_address ab
LEFT JOIN civicrm_phone as pb on pb.contact_id = c.id AND pb.is_billing = 1
WHERE p.contact_id = c.id
AND p.is_test = 0
AND p.event_id = 1
AND p.status_id NOT IN (4,11,12)
AND ( c.is_deleted = 0 OR c.is_deleted IS NULL )
AND o.entity_id = c.id
AND a.contact_id = c.id
AND s.id = a.state_province_id
AND co.id = a.country_id
AND ph.contact_id = c.id
AND ph.is_primary = 1
AND pf.contact_id = c.id
AND pf.phone_type_id = 3
AND e.contact_id = c.id
AND e.is_primary = 1
AND ab.contact_id = c.id
AND ab.is_billing = 1
这让我:
1054 - 未知栏' c.id'在' on条款'
我如何使这项工作?
答案 0 :(得分:0)
出现的是别名表" c" (指的是civicrm_contact)没有列" id"在它。
您确定此列中是否存在此列?