У меня есть две таблицы базы данных customers
, которые содержат данные о клиентах с такой схемой:
mysql> SELECT * FROM customers;
customer_id created_at partner_id
1 "2019-08-20 09:17:58" cats
2 "2019-09-12 11:46:37" dogs
и customers_facts
, в которых хранятся факты клиентов в форме fact_name
и соответствующих fact_value
.
mysql> SELECT * FROM customers_facts;
customer_id fact_name fact_value
1 name Milton
1 city Milan
1 birthday "2019-08-20 09:17:58"
1 company Idaho
2 surname Bloom
2 name Orlando
3 name Milton
3 city Milan
3 birthday "2011-10-20 11:17:58"
3 company Chicago
Я хочу создать запрос, чтобы получить все customer_id
, где name=Milton
и city=Milan
отсортированы по birthday
и company
. Итак, в моем примере результаты будут:
mysql> SELECT customer_id FROM ....
customer_id
1
3
У меня есть запрос, который получает все customers_id
, где name=Milton
и city=Milan
SELECT cf.* FROM customers_facts cf
WHERE cf.customer_id IN (
SELECT cf.customer_id FROM customers_facts cf
WHERE (cf.fact_name,cf.fact_value) IN (('name','Milton'),('city','Milan'))
GROUP BY cf.customer_id
HAVING COUNT(*) = 2
)
Но у меня нет идея как отсортировать результаты по fact_value
как это сделать? Возможно ли такое при такой схеме?