เกี่ยวกับเรื่อง ฐานข้อมูล กับ ตาราง
ตอนนี้มีตารางข้อมูล ที่ได้มาโดยการ select
itemlist_id item name quantity capacity user_id slot use
5 ข้าวโพด 2 15 1 1
32 ขี้ไก่ 9 50 1 1
76 ปลากระโทงแทง 6 5 1 2
79 ปลาฉลาม 2 1 1 2
168 เกลือ 1 50 1 1
*quantity คือ จำนวนของฐานของมูลขอลแต่ละ item name ได้มาจากการ count
capacity คือ จำนวนความจุ ที่ตั้งใจจะนำไปแบ่งแต่ละcell
slot use = ceil(capacity/quantity)
โดยจะนำข้อมูลทั้งหมดไปใส่ในตารางที่ผ่านการ loop
สิ่งที่ตั้งใจทำก้อคือ จะแบ่งช่องของสิ่งของเหล่านี้ โดยให้ค่า quantity ไม่เกิน capacity ในแต่ละช่อง
ถ้าสำเร็จผลที่ได้รับคือ
ข้าวโพด2 ขี้ไก่9 ปลาฯ5 ปลาฯ1 ปลาฉลาม1 ปลาฉลาม1 เกลือ1
*โดยจะเกิดloop ทั้งหมด 7 ครั้ง
ใครแก้โจทย์นี้ได้ คารวะ 3 จอก
ยากจริง ๆ ด้วย :P :-X
มาขอ copy โจทย์ไปนั่งแก้ปัญหาก่อน
กำๆ
^^''
ฮ่าๆ นั่งคิดตั้งแต่ 6 โมงเย็น ยังถกไม่ออกเลย
เพียงท่านเข้าชม ก็นิยมอยู่ในใจ
ขอบคุณที่ให้ความสนใจครับ ถึงแม้มันจะยาก- -
:P พอดีว่าผมแก้ปัญหาโดยใช้ Array แทน Database เพื่อความสะดวก ถึงเวลาจริงๆน่าจะประยุกต์ได้
<?
$data[0] = array('itemlist_id'=>5,'item_name'=>'ข้าวโพด','quantity'=>2,'capacity'=>15,'user_id'=>1,'slot_use'=>1) ;
$data[1] = array('itemlist_id'=>32,'item_name'=>'ขี้ไก่','quantity'=>9,'capacity'=>50,'user_id'=>1,'slot_use'=>1) ;
$data[2] = array('itemlist_id'=>76,'item_name'=>'ปลากระโทงแทง','quantity'=>6,'capacity'=>5,'user_id'=>1,'slot_use'=>2) ;
$data[3] = array('itemlist_id'=>79,'item_name'=>'ปลาฉลาม','quantity'=>2,'capacity'=>1,'user_id'=>1,'slot_use'=>2) ;
$data[4] = array('itemlist_id'=>168,'item_name'=>'เกลือ','quantity'=>1,'capacity'=>50,'user_id'=>1,'slot_use'=>1) ;
if(is_array($data))
{
// read from data I
foreach($data as $row)
{
while($row['quantity'] > 0)
{
$quantity = ($row['quantity'] > $row['capacity'] ? $row['capacity'] : $row['quantity'] ) ;
$row['quantity'] -= $quantity ;
// insert to data II
$data2[] = array('itemlist_id'=>$row['itemlist_id'],'item_name'=>$row['item_name'],'quantity'=>$quantity,'capacity'=>$row['capacity'],'user_id'=>$row['user_id'],'slot_use'=>1) ;
echo 'itemlist_id=>',$row['itemlist_id'],', item_name=>',$row['item_name'],', quantity=>',$quantity,', capacity=>',$row['capacity'],', user_id=>',$row['user_id'],', slot_use=>',1 , "<br>";
}
}
}
?>
น่าจะแก้ปัญหาได้เหมือนกัน :P
อ่านแล้ว งง ๆ
เขียนลวก ๆ นะ
sql = select * from table
rs = query(sql)
rt = array();
while(r=mysqlfetcharray(rs)){
if($r[qt] > $r[cap]) $rt[$r[name]] = $r[cap]
else $rt[$r[name]] = $r[qt]
}
print_r($rt)
คิดว่า query ครั้งเดียว ก็ออกมาได้แล้ว ???
select
t.item name,
if(t.capacity > t.quantity, t.capacity, t.quantity) as data_count
from
(.... sub select query ....) t
ใน sub select query คุณก็ใส่ select ชุดแรกที่คุณมีน่ะ
รึผมเข้าใจ คำถามผิดอีกหว่า
:P :P
ว่าจะสงสัย แต่ไม่สงสัยละ พอมองภาพออกแล้ว จะเอาไปใ้งานยังงัย :P
ลักษณะนี้เอาไว้ใช้เวลา ที่ พื้นที่ stock มีจำกัดครั้ง
จะได้แบ่งพื้นที่ คำนวนเป็นพื้นที่ทั้งหมดที่ต้องใช้
และ แต่ละสินค้า ต้องใช้พื้นที่ทั้งหมดเท่าไหร่
ขอบคุณสำหรับคำตอบนะครับ เด๋วลองแกะกก่อน
อ้างถึงจาก: 9neo ใน 23 พฤศจิกายน 2008, 08:14:40
ว่าจะสงสัย แต่ไม่สงสัยละ พอมองภาพออกแล้ว จะเอาไปใ้งานยังงัย :P
เปลี่ยนกระทู้เร็วจัง กำลังตอบเลย อิอิ
อ้างถึงจาก: SL_master ใน 23 พฤศจิกายน 2008, 08:20:54
อ้างถึงจาก: 9neo ใน 23 พฤศจิกายน 2008, 08:14:40
ว่าจะสงสัย แต่ไม่สงสัยละ พอมองภาพออกแล้ว จะเอาไปใ้งานยังงัย :P
เปลี่ยนกระทู้เร็วจัง กำลังตอบเลย อิอิ
นึกถึงเรื่อง quota ของร้านค้าขึ้นมาพอดีครับ ผระมาณว่า ร้านใหน สามารถขายได้ไม่เกินกี่ชิ้น ประมาณนั้น อาจไม่ตรง แต่คิดว่าใช้งานใกล้เคียงกัน
อ่า ประมาณนั้นแหละครับ พอมีแนวหรือ port เก่าๆ มั้ยครับ
เพราะตอนนี้ ติดตรงนี้มา 2 วันและ ทำไม่ผ่านซะที
ขอบคุณครับ
ขอบคุณคุณ jatuphum นะครับ กำลังศึกษาวิธีการ และ ประยุกต์อยู่
ขอบคุณคุณ Synchronize เช่นเดียวกันครับ ขอลองทั้ง 2 วิธี
T-T เล่นที่นี่ ไม่เคยผิดหวังจริงๆ
ว่าแต่ไมผมอ่านแ้้ล้วยังงงกับโจทย์อยู่เลยอ่า :P
อ้างถึงจาก: SL_master ใน 22 พฤศจิกายน 2008, 22:29:41
เกี่ยวกับเรื่อง ฐานข้อมูล กับ ตาราง
ตอนนี้มีตารางข้อมูล ที่ได้มาโดยการ select
itemlist_id item name quantity capacity user_id slot use
5 ข้าวโพด 2 15 1 1
32 ขี้ไก่ 9 50 1 1
76 ปลากระโทงแทง 6 5 1 2
79 ปลาฉลาม 2 1 1 2
168 เกลือ 1 50 1 1
*quantity คือ จำนวนของฐานของมูลขอลแต่ละ item name ได้มาจากการ count
capacity คือ จำนวนความจุ ที่ตั้งใจจะนำไปแบ่งแต่ละcell
slot use = ceil(capacity/quantity)
โดยจะนำข้อมูลทั้งหมดไปใส่ในตารางที่ผ่านการ loop
สิ่งที่ตั้งใจทำก้อคือ จะแบ่งช่องของสิ่งของเหล่านี้ โดยให้ค่า quantity ไม่เกิน capacity ในแต่ละช่อง
ถ้าสำเร็จผลที่ได้รับคือ
ข้าวโพด2 ขี้ไก่9 ปลาฯ5 ปลาฯ1 ปลาฉลาม1 ปลาฉลาม1 เกลือ1
*โดยจะเกิดloop ทั้งหมด 7 ครั้ง
ใครแก้โจทย์นี้ได้ คารวะ 3 จอก
SELECT name, if(capacity > quantity, quantity, quantity-capacity) as final FROM 'capacity'
แต่ไม่เข้าใจ ตรง 1 จุด ไม่รู้ว่าผิดมั้ย คือ...
76 ปลากระโทงแทง 6 5 1 2
มันควรจะได้ 1 หรือ 5 กันแน่ เพราะมันเกิน Capacity มา 1