나중에 사용할 수있는 연락처 테이블을 만들고 싶습니다. 그래서 구조 :쿼리에 여러 JOIN이 있습니다.
table contact: id, contact_type
table contact_meta : id, contact_id, meta_key, meta_value
이 쿼리는 나쁜 습관입니까? 쿼리가 아닌 "나쁜 관행"
select c.id,
cm1.meta_value as name,
cm2.meta_value as email,
cm3.meta_value as bussiness_phone
from contact as c
left join contact_meta as cm1 on (cm1.contact_id = c.id)
left join contact_meta as cm2 on (cm2.contact_id = c.id)
left join contact_meta as cm3 on (cm3.contact_id = c.id)
where c.contact_type = 'supplier' and
cm1.meta_key = 'name' and
cm2.meta_key = 'email' and
cm3.meta_key = 'bussiness_phone' ORDER BY c.id DESC
10 개가 아니라 3 개의 조인이 있습니까? – BenM
EAV는 관계형 데이터베이스에서는 사용하지 않는 것이 좋지만 때로는 대안이 없기 때문에 기존의 방법은 MAX (CASE WHEN THEN END) 구문을 사용하는 것이므로 좋지 않습니다. 그것은 간략하고 (아마도 더 빠를 것입니다). 또한 WHERE 절의 조건을 포함하여 사용자가 원하는대로 NULL 결과를 제외합니다. – Strawberry
@BenM, 열 개가있을 것입니다. – user2577399