PDA

View Full Version : سوال: force



baran.f.a
سه شنبه 30 تیر 1394, 10:44 صبح
سلام به راهنمایی نیاز دارم خیلی سریع .
ببینید من می خوام گزارشی بگیرم که تعداد درصد عملکرد افراد بر اساس تاریخ خروجی اونه چیزی مشابه لینک های زیر :
کدی که تو این مثال ها آوردرو متوجه نمی شم ولی خروجی مشابه از اونا رو می خوام هیچ کروم از روش هایی که رفتم درست نیست لطفا راهنمایی کنید .

http://stackoverflow.com/questions/10925445/mysql-select-dynamic-row-values-as-column-names-another-column-as-value

http://stackoverflow.com/questions/26883660/select-rows-with-dynamic-names-from-different-table-as-column-name-in-new-table?lq=1

کد من :


select technician_id ,concat('select GROUP_CONCAT( DISTINCT CONCAT(
'MAX(IF(pmdate = ''', pmdate, ''', pmcontrol.percent, NULL)) AS ', '`', pmdate, '`'
)
ORDER BY pmdate
)
from pmcontrol '
)
from pmcontrol
INNER JOIN user
on user.u_id=pmcontrol.technician_id
group by technician_id


ساختار جداولم :

pmcontrol : technician_id , percent , psp_id , pmdate

user : u_id , user_name , user_family

baran.f.a
سه شنبه 30 تیر 1394, 11:10 صبح
کد زیر تو wamp کار می کنه و نتیجه درست می ده حالا سوالم اینه که چطور باید تو صفحات php ازش استفاده کنم هر کاری کردم خطا داشتم :


SET @sql = NULL;

SELECT
GROUP_CONCAT(
DISTINCT CONCAT(
'MAX(IF(pmdate = ''', pmdate, ''', percent, NULL)) AS ', '`', pmdate, '`'
)
ORDER BY pmdate
)
INTO
@sql
FROM
pmcontrol;

SET @sql = CONCAT('
SELECT
user_family AS articleId,

', @sql, '
FROM
pmcontrol
LEFT JOIN user
on user.u_id=pmcontrol.technician_id
GROUP
BY technician_id
');

PREPARE stmt FROM @sql;

EXECUTE stmt;


تغییراتم :



select CONCAT('
SELECT
user_family AS articleId,
,
(SELECT
GROUP_CONCAT(
DISTINCT CONCAT(
'MAX(IF(pmdate = ''', pmdate, ''', percent, NULL)) AS ', '`', pmdate, '`'
)
ORDER BY pmdate
)
INTO
@sql
FROM
pmcontrol
)
FROM
pmcontrol
LEFT JOIN user
on user.u_id=pmcontrol.technician_id
GROUP
BY technician_id
')




خطا زیر رو می ده :

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MAX(IF(pmdate = ''', pmdate, ''', percent, NULL)) AS ', '`', pmdate, '`' ) ' at line 1

baran.f.a
سه شنبه 30 تیر 1394, 13:17 عصر
کسی نیست راهنمایی کنه ؟؟؟

phpdev
سه شنبه 30 تیر 1394, 14:50 عصر
ببین استور پروسیجرش کن بعد با pdo صداش بزن