我覺得這是超越我,我想我的MySQL查詢轉換,以便它顯示正是這樣的行和列: PHP和MySQL查詢,使用PHP行轉換爲列
這是我有一個MySQL查詢創建:
下面是實際的查詢來創建此:
SELECT h.workdate AS `Date`
, DAYNAME(h.workdate) AS `Day`
, COALESCE(TRUNCATE(SUM(
CASE
WHEN (shift='AM' AND DriverDock = 'Driv' AND `Salary Code Description` LIKE '%Perm%')
THEN
CASE
WHEN paycode IN ('03 Overtime 2.0')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 2.0)
WHEN paycode IN ('02 Overtime 1.5')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 1.5)
WHEN paycode IN ('01 Ordinary')
THEN (employeehours * p.`Base Rate`)
END
END
),2),0) AS `AMPERMDRIV`
, COALESCE(TRUNCATE(SUM(
CASE
WHEN (shift='AM' AND DriverDock = 'Dock' AND `Salary Code Description` LIKE '%Perm%')
THEN
CASE
WHEN paycode IN ('03 Overtime 2.0')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 2.0)
WHEN paycode IN ('02 Overtime 1.5')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 1.5)
WHEN paycode IN ('01 Ordinary')
THEN (employeehours * p.`Base Rate`)
END
END
),2),0) AS `AMPERMDOCK`
, COALESCE(TRUNCATE(SUM(
CASE
WHEN (shift='AM' AND DriverDock = 'Driv' AND `Salary Code Description` LIKE '%Cas%')
THEN
CASE
WHEN paycode IN ('03 Overtime 2.0')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 2.0)
WHEN paycode IN ('02 Overtime 1.5')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 1.5)
WHEN paycode IN ('01 Ordinary')
THEN (employeehours * p.`Base Rate`)
END
END
),2),0) AS `AMCASUDRIV`
, COALESCE(TRUNCATE(SUM(
CASE
WHEN (shift='AM' AND DriverDock = 'Dock' AND `Salary Code Description` LIKE '%Cas%')
THEN
CASE
WHEN paycode IN ('03 Overtime 2.0')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 2.0)
WHEN paycode IN ('02 Overtime 1.5')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 1.5)
WHEN paycode IN ('01 Ordinary')
THEN (employeehours * p.`Base Rate`)
END
END
),2),0) AS `AMCASUDOCK`
, COALESCE(TRUNCATE(SUM(
CASE
WHEN (shift='AM' AND DriverDock = 'Driv' AND `Salary Code Description` LIKE '%AGENT%')
THEN
CASE
WHEN paycode IN ('03 Overtime 2.0')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 2.0)
WHEN paycode IN ('02 Overtime 1.5')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 1.5)
WHEN paycode IN ('01 Ordinary')
THEN (employeehours * p.`Base Rate`)
END
END
),2),0) AS `AMAGENTDRIV`
, COALESCE(TRUNCATE(SUM(
CASE
WHEN (shift='AM' AND DriverDock = 'Dock' AND `Salary Code Description` LIKE '%AGENT%')
THEN
CASE
WHEN paycode IN ('03 Overtime 2.0')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 2.0)
WHEN paycode IN ('02 Overtime 1.5')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 1.5)
WHEN paycode IN ('01 Ordinary')
THEN (employeehours * p.`Base Rate`)
END
END
),2),0) AS `AMAGENTDOCK`
, COALESCE(TRUNCATE(SUM(
CASE
WHEN (shift='PM' AND DriverDock = 'Driv' AND `Salary Code Description` LIKE '%Perm%')
THEN
CASE
WHEN paycode IN ('03 Overtime 2.0')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 2.0)
WHEN paycode IN ('02 Overtime 1.5')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 1.5)
WHEN paycode IN ('01 Ordinary')
THEN (employeehours * p.`Base Rate`)
END
END
),2),0) AS `PMPERMDRIV`
, COALESCE(TRUNCATE(SUM(
CASE
WHEN (shift='PM' AND DriverDock = 'Dock' AND `Salary Code Description` LIKE '%Perm%')
THEN
CASE
WHEN paycode IN ('03 Overtime 2.0')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 2.0)
WHEN paycode IN ('02 Overtime 1.5')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 1.5)
WHEN paycode IN ('01 Ordinary')
THEN (employeehours * p.`Base Rate`)
END
END
),2),0) AS `PMPERMDOCK`
, COALESCE(TRUNCATE(SUM(
CASE
WHEN (shift='PM' AND DriverDock = 'Dock' AND `Salary Code Description` LIKE '%Cas%')
THEN
CASE
WHEN paycode IN ('03 Overtime 2.0')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 2.0)
WHEN paycode IN ('02 Overtime 1.5')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 1.5)
WHEN paycode IN ('01 Ordinary')
THEN (employeehours * p.`Base Rate`)
END
END
),2),0) AS `PMCASUDOCK`
, COALESCE(TRUNCATE(SUM(
CASE
WHEN (shift='PM' AND DriverDock = 'Dock' AND `Salary Code Description` LIKE '%AGENT%')
THEN
CASE
WHEN paycode IN ('03 Overtime 2.0')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 2.0)
WHEN paycode IN ('02 Overtime 1.5')
THEN (employeehours * IF(p.`Other Rate`=0,p.`Base Rate`,p.`Other Rate`) * 1.5)
WHEN paycode IN ('01 Ordinary')
THEN (employeehours * p.`Base Rate`)
END
END
),2),0) AS `PMAGENTDOCK`
FROM employeedata d
JOIN employeehours h
ON d.`ID Number` = h.employeeid
JOIN historyemployeepay p
ON (h.employeeid = p.EmployeeID)
AND (h.workdate >= p.FromDate)
AND (h.workdate <= p.ToDate OR p.ToDate IS NULL)
CROSS
JOIN otherrates r
WHERE DAYNAME(h.workdate) <> 'Saturday'
GROUP BY h.workdate
我有以下的HTML表格,我怎麼可以在查詢結果和DISP環正確佈局?:
<?php
$querydailyoperations=mysql_query("
QUERY ABOVE
");
while($querydailyoperationsshow=mysql_fetch_array($querydailyoperations)){ echo "??????????";};
?>
和:
<tr><td class="greencell">AM</td><td class="greencell">PERMANENT</td><td class="greencell">DRIVER</td>5x td here, input from above query...
</tr>
<tr><td class="greencell">AM</td><td class="greencell">PERMANENT</td><td class="dbluecell">DH</td> etc...
</tr>
<tr><td class="greencell">AM</td><td class="orangecell">CASUAL</td><td class="greencell">DRIVER</td> etc...
</tr>
<tr><td class="greencell">AM</td><td class="orangecell">CASUAL</td><td class="dbluecell">DH</td> etc...
</tr>
<tr><td class="greencell">AM</td><td nowrap class="redcell">AGENT LABOUR</td><td class="greencell">DRIVER</td> etc...
</tr>
<tr><td class="greencell">AM</td><td nowrap class="redcell">AGENT LABOUR</td><td class="dbluecell">DH</td> etc...
</tr>
<tr><td class="bluecell">PM</td><td class="greencell">PERMANENT</td><td class="greencell">DRIVER</td> etc...
</tr>
<tr><td class="bluecell">PM</td><td class="greencell">PERMANENT</td><td class="dbluecell">DH</td> etc...
</tr>
<tr><td class="bluecell">PM</td><td class="orangecell">CASUAL</td><td class="dbluecell">DH</td> etc...
</tr>
<tr><td class="bluecell">PM</td><td nowrap class="redcell">AGENT LABOUR</td><td class="dbluecell">DH</td> etc...
</tr>
</tbody>
</table>
如果我正確理解這個問題,這與你的MySQL查詢無關。按照您想要的方式格式化數據的正確方法是使用PHP循環並構建HTML以符合所需的規範,並使用CSS實現外觀和感覺。 –
這就是我想要做的,但我似乎無法得到我的頭,我會在編碼中添加..謝謝brian – atomapps
沒問題,編輯你的問題,並張貼你有什麼代碼我會幫你解決的。 –