약속 데이터베이스에서 보고서를 반환하려고합니다. 내 현재의 SQL 쿼리를 첨부, 나는 데 어려움은 내가명명 된 데이터베이스에서 값을 반환하는 SQL 쿼리 만들기
join contacts on (customer.entity_id = contact.contact_id and contacts.arch = 'contact.phonenumber')
join contact_detail on (contact_detail.contact_id = contacts.contact_id and contact_detail.lookup = 'mobile')
즉, 내 고객 연락처 테이블을 "결합"때 즉시 해당 테이블과 세부 사항에 대한 항목이하지 않은 모든 고객을 잃을 것입니다 테이블, 내가 달성하고자하는 것이 클라이언트가 연락처 항목이 없다면 해당 필드에 null을 반환한다는 것입니다. 즉 나는
Name Time note Mobile
DAVID 8pm haircut 0412656865
Julie 8pm style
Daniel 8pm Colour 0412533535
을 갈 수도에 가입하지만, 그 라인
DAVID 8pm haircut 0412656865
Daniel 8pm Colour 0412533535
그녀는 간단한 그게 더 contact.phonenumber
이 없기 때문에이 줄리 제외를 추가하는 추가하기 전에 문제. 나는 줄리가이 시스템은 테이블, 참여하고 몇 가지 세부 사항 및 조회 테이블을 역할을, 따라서 우리는 엔티티 테이블을 사용 프론트 엔드 구동되는 자바 원형과 MySQL 데이터베이스를 사용하는 NULL 값
반환 할 것을 선호 할 것입니다.
실제 SQL 쿼리는
select
p.activity_start_time
, p.activity_end_time
, p.activity_start_time AS start_time
, p.activity_end_time as end_time
, a.status
, a.description AS appointmentnote
, e.name as patientname
, e.description AS patientdescription
, customer.name as customername
, customer.description as customerdescription
, sd.name as schedule_name
, eAt.name as appointment_type
, mobile.description as Mobile
from acts a
join participations p on
a.act_id=p.act_id and a.arch_short_name='act.customerAppointment' and
p.act_arch_short_name='act.customerAppointment'
join entities e on p.entity_id=e.entity_id
join participations pAt on a.act_id=pAt.act_id and
a.arch_short_name='act.customerAppointment' and
pAt.arch_short_name='participation.appointmentType'
join entities eAt on pAt.entity_id=eAt.entity_id
left join entity_relationships er ON (er.target_id = e.entity_id
AND er.active_start_time <= date_add((date_format('2013-07-24',"%Y-%m-%d")),
INTERVAL "00:00:00" HOUR_SECOND)
AND ((er.active_end_time >= date_add((date_format('2013-07-24',"%Y-%m-%d")),
INTERVAL "23:59:59" HOUR_SECOND)) OR (er.active_end_time IS NULL)))
left join entities customer ON
(customer.entity_id = er.source_id AND customer.arch_short_name = 'party.customerperson')
join contacts mobile on (mobile.party_id = customer.entity_id AND mobile.arch_short_name = 'contact.phoneNumber')
join contact_classifications mb_class on (mb_class.contact_id = mobile.contact_id AND mb_class.lookup_id = '120')
join participations schedule on
a.act_id=schedule.act_id and schedule.arch_short_name='participation.schedule'
left join entities sd on
(sd.entity_id = schedule.entity_id)
left outer join act_details d on
a.act_id=d.act_id
where (p.activity_start_time<date_add((date_format('2013-07-24',"%Y-%m-%d")),
INTERVAL "00:00:00" HOUR_SECOND)
and p.activity_end_time>date_add((date_format('2013-07-24',"%Y-%m-%d")),
INTERVAL "23:59:59" HOUR_SECOND) or
p.activity_start_time<date_add((date_format('2013-07-24',"%Y-%m-%d")),
INTERVAL "00:00:00" HOUR_SECOND)
and p.activity_end_time>date_add((date_format('2013-07-24',"%Y-%m-%d")),
INTERVAL "23:59:59" HOUR_SECOND) or
p.activity_start_time>=date_add((date_format('2013-07-24',"%Y-%m-%d")),
INTERVAL "00:00:00" HOUR_SECOND) and
p.activity_end_time<=date_add((date_format('2013-07-24',"%Y-%m-%d")),
INTERVAL "23:59:59" HOUR_SECOND)) and
(schedule.activity_start_time<date_add((date_format('2013-07-24',"%Y-%m-%d")),
INTERVAL "00:00:00" HOUR_SECOND) and
schedule.activity_end_time>date_add((date_format('2013-07-24',"%Y-%m-%d")),
INTERVAL "23:59:59" HOUR_SECOND) or
schedule.activity_start_time<date_add((date_format('2013-07-24',"%Y-%m-%d")),
INTERVAL "00:00:00" HOUR_SECOND) and
schedule.activity_end_time>date_add((date_format('2013-07-24',"%Y-%m-%d")),
INTERVAL "23:59:59" HOUR_SECOND) or
schedule.activity_start_time>=date_add((date_format('2013-07-24',"%Y-%m-%d")),
INTERVAL "00:00:00" HOUR_SECOND) and
schedule.activity_end_time<=date_add((date_format('2013-07-24',"%Y-%m-%d")),
INTERVAL "23:59:59" HOUR_SECOND)) and
e.arch_short_name = 'party.patientpet' and
customer.arch_short_name = 'party.customerperson'
and sd.name like CONCAT('GROOM','%')
order by p.activity_start_time, sd.name, a.act_id
(은 MySQL의 구문에서 따라 달라질 수 있습니다)입니다. [SQL 결합의 시각적 설명] (http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html)을 참조하십시오. – eggyal