 |
|
|
 |
 |
|
เอา SQL มาแปะหน่อยครับ
|
 |
 |
 |
 |
Date :
2018-02-02 15:03:48 |
By :
OOP |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Select *
From ศูนย์
Left join ตารางกรอกขัอมล
On ศูนย์.id = ตารางกรอกข้อมูล
|
 |
 |
 |
 |
Date :
2018-02-02 15:57:08 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

นี่ครับดึงมาจาก view ครับ
|
 |
 |
 |
 |
Date :
2018-02-04 18:57:31 |
By :
ไนน์ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เอา text มา paste ครับ ง่ายๆ ไม่ต้อง capture มา ก๊อปมาแก้ไขไม่ได้
|
 |
 |
 |
 |
Date :
2018-02-04 19:23:58 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (PHP)
$sql = " SELECT id,
sm_pla_seed_varieties,
varieties_id,
center_name,
sm_pla_seed_sources,
DATE_FORMAT(last_update, '%Y/%m/%d %H:%i:%s') as last_update,
(SELECT GROUP_CONCAT(DATE_FORMAT(date_date,'%d/%m/%Y') ORDER BY date_date) FROM db_data_subdate WHERE data_id = db_data.id AND date_type = 1 GROUP by data_id) as date_sapling,
(SELECT GROUP_CONCAT(DATE_FORMAT(date_date,'%d/%m/%Y') ORDER BY date_date) FROM db_data_subdate WHERE data_id = db_data.id AND date_type = 2 GROUP by data_id) as date_plant,
s_pla_plant_area,
sm_pla_plant_note
FROM db_data
WHERE sm_cor_year ='".$sm_cor_year."'
AND sm_cor_season ='".$sm_cor_season."'
AND type='1'
";
|
 |
 |
 |
 |
Date :
2018-02-04 20:15:07 |
By :
1173743579435910 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
หลักการ ต้องเอา ตารางศูนย์ มาเป็น primary table แล้วใช้ left join กับตารางข้อมูลที่มากรอก
ถ้า db_data นี่เป็นตารางศูนย์
และ db_data_subdate นี่เป็นตารางข้อมูลที่ศูนย์มากรอก
ถ้าใช่ โค๊ดที่ทำอยู่ก็น่าจะถูกต้อง แต่ไม่ถูกเรื่อง performance ใช้ subquery ใน select clause เปลืองทรัพยากรมากไป
statement ที่ควรจะใช้
Code (SQL)
SELECT id,
sm_pla_seed_varieties,
varieties_id,
center_name,
sm_pla_seed_sources,
DATE_FORMAT(last_update, '%Y/%m/%d %H:%i:%s') as last_update,
s1.gc as date_sapling,
s2.gc as date_plant,
s_pla_plant_area,
sm_pla_plant_note
FROM db_data d
left join (
SELECT data_id, GROUP_CONCAT(DATE_FORMAT(date_date,'%d/%m/%Y') ORDER BY date_date) gc
FROM db_data_subdate
WHERE date_type = 1
GROUP by data_id
) s1 on s1.data_id=d.id
left join (
SELECT data_id, data_type, GROUP_CONCAT(DATE_FORMAT(date_date,'%d/%m/%Y') ORDER BY date_date) gc
FROM db_data_subdate
WHERE date_type = 2
GROUP by data_id
) s2 on s2.data_id=d.id
WHERE sm_cor_year = 2560
AND sm_cor_season = 1
AND type='1'
แต่ถ้า db_data คือตารางที่ ศูยน์มากรอก และ db_data_subdate เป็นตาราง detail ที่ศูนย์มากรอก
ต้องเอา ตารางศูนย์ มาเป็น primary table แล้วใช้ left join กับตารางข้อมูลที่มากรอก
Code (SQL)
select c.* , d.*
from table_center c
left join (
## sql statement ของ จขกท นำมาใส่ตรงนี้
) as s on c.name = s.center_name
|
 |
 |
 |
 |
Date :
2018-02-04 21:19:58 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|