1 (edited by insane 2011-07-20 18:37:45)

Topic: Gal sumastysit kaip istraukt duomenis..

Pateikiu dvi supaprastintas lentas:

ORDERS
order_id    order_person_id
10            20

ORDER_PERSON_DATA
id      order_id   person_attribute_id   order_person_data_name   order_person_data_value
1      10            98                           delivery date                     2011-01-01
2      10            99                           delivery time                     09:00

Gal isivaizduojat kaip istraukt duomenis, kad gautumem toki rezultata:

RESULT
order_id    order_person_id   delivery_date  delivery_time
10            20                       2011-01-01     09:00

Re: Gal sumastysit kaip istraukt duomenis..

Sujungi, grupuoji pagal orders id, kitiems dviem stulpeliams darai "pavertimą" (pivot), pvz.:

SELECT ...,
   MAX(IF(`order_person_data_name` = 'delivery date', order_person_data_value, NULL)) AS `delivery_date`,
   MAX(IF(`order_person_data_name` = 'delivery time', order_person_data_value, NULL)) AS `delivery_time`
FROM ...
   INNER JOIN ...
GROUP BY ...

Re: Gal sumastysit kaip istraukt duomenis..

Dekui, padejo.)
Smagiausiai kai visa tai reikejo propel'iui sukist:D