ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingมีคำถามยากๆมาฝาก php mysql
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: มีคำถามยากๆมาฝาก php mysql  (อ่าน 3141 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
SL_master
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 57
ออฟไลน์ ออฟไลน์

กระทู้: 1,188



ดูรายละเอียด เว็บไซต์
« เมื่อ: 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 จอก
บันทึกการเข้า

tinnoi
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 90
ออฟไลน์ ออฟไลน์

กระทู้: 2,957



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 22 พฤศจิกายน 2008, 22:50:09 »

ยากจริง ๆ ด้วย   Tongue Lips Sealed

มาขอ copy โจทย์ไปนั่งแก้ปัญหาก่อน
บันทึกการเข้า

nos
ก๊วนเสียว
*

พลังน้ำใจ: 7
ออฟไลน์ ออฟไลน์

กระทู้: 281



ดูรายละเอียด
« ตอบ #2 เมื่อ: 22 พฤศจิกายน 2008, 22:59:56 »

กำๆ
บันทึกการเข้า
SL_master
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 57
ออฟไลน์ ออฟไลน์

กระทู้: 1,188



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 22 พฤศจิกายน 2008, 23:03:49 »

^^''
ฮ่าๆ นั่งคิดตั้งแต่ 6 โมงเย็น ยังถกไม่ออกเลย
บันทึกการเข้า

SL_master
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 57
ออฟไลน์ ออฟไลน์

กระทู้: 1,188



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 22 พฤศจิกายน 2008, 23:24:56 »

เพียงท่านเข้าชม ก็นิยมอยู่ในใจ
ขอบคุณที่ให้ความสนใจครับ ถึงแม้มันจะยาก- -
บันทึกการเข้า

jatuphum
ก๊วนเสียว
*

พลังน้ำใจ: 18
ออฟไลน์ ออฟไลน์

กระทู้: 312



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 23 พฤศจิกายน 2008, 02:30:59 »

 Tongue  พอดีว่าผมแก้ปัญหาโดยใช้ 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>";
}
    }
}
?>


น่าจะแก้ปัญหาได้เหมือนกัน  Tongue
« แก้ไขครั้งสุดท้าย: 23 พฤศจิกายน 2008, 02:40:01 โดย jatuphum » บันทึกการเข้า

thenetxx
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 41
ออฟไลน์ ออฟไลน์

กระทู้: 1,986



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 23 พฤศจิกายน 2008, 04:56:18 »

อ่านแล้ว งง ๆ

เขียนลวก ๆ นะ
โค๊ด:

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)
บันทึกการเข้า

Develop site but can't develop life
ASIA
Synchronize
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 83
ออฟไลน์ ออฟไลน์

กระทู้: 1,231



ดูรายละเอียด
« ตอบ #7 เมื่อ: 23 พฤศจิกายน 2008, 07:25:00 »

คิดว่า query ครั้งเดียว ก็ออกมาได้แล้ว  Huh?

โค๊ด:
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 ชุดแรกที่คุณมีน่ะ

รึผมเข้าใจ คำถามผิดอีกหว่า 

Tongue Tongue
บันทึกการเข้า

siamman
บุคคลทั่วไป
« ตอบ #8 เมื่อ: 23 พฤศจิกายน 2008, 08:14:40 »

ว่าจะสงสัย แต่ไม่สงสัยละ พอมองภาพออกแล้ว จะเอาไปใ้งานยังงัย  Tongue
« แก้ไขครั้งสุดท้าย: 23 พฤศจิกายน 2008, 08:19:47 โดย 9neo » บันทึกการเข้า
SL_master
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 57
ออฟไลน์ ออฟไลน์

กระทู้: 1,188



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 23 พฤศจิกายน 2008, 08:19:58 »

ลักษณะนี้เอาไว้ใช้เวลา ที่ พื้นที่ stock มีจำกัดครั้ง
จะได้แบ่งพื้นที่ คำนวนเป็นพื้นที่ทั้งหมดที่ต้องใช้
และ แต่ละสินค้า ต้องใช้พื้นที่ทั้งหมดเท่าไหร่

ขอบคุณสำหรับคำตอบนะครับ เด๋วลองแกะกก่อน
บันทึกการเข้า

SL_master
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 57
ออฟไลน์ ออฟไลน์

กระทู้: 1,188



ดูรายละเอียด เว็บไซต์
« ตอบ #10 เมื่อ: 23 พฤศจิกายน 2008, 08:20:54 »

ว่าจะสงสัย แต่ไม่สงสัยละ พอมองภาพออกแล้ว จะเอาไปใ้งานยังงัย  Tongue
เปลี่ยนกระทู้เร็วจัง กำลังตอบเลย อิอิ
บันทึกการเข้า

siamman
บุคคลทั่วไป
« ตอบ #11 เมื่อ: 23 พฤศจิกายน 2008, 08:27:38 »

ว่าจะสงสัย แต่ไม่สงสัยละ พอมองภาพออกแล้ว จะเอาไปใ้งานยังงัย  Tongue
เปลี่ยนกระทู้เร็วจัง กำลังตอบเลย อิอิ

นึกถึงเรื่อง quota ของร้านค้าขึ้นมาพอดีครับ ผระมาณว่า ร้านใหน สามารถขายได้ไม่เกินกี่ชิ้น ประมาณนั้น อาจไม่ตรง แต่คิดว่าใช้งานใกล้เคียงกัน
บันทึกการเข้า
SL_master
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 57
ออฟไลน์ ออฟไลน์

กระทู้: 1,188



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 23 พฤศจิกายน 2008, 08:29:04 »

อ่า ประมาณนั้นแหละครับ พอมีแนวหรือ port เก่าๆ มั้ยครับ
เพราะตอนนี้ ติดตรงนี้มา 2 วันและ ทำไม่ผ่านซะที
ขอบคุณครับ
บันทึกการเข้า

SL_master
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 57
ออฟไลน์ ออฟไลน์

กระทู้: 1,188



ดูรายละเอียด เว็บไซต์
« ตอบ #13 เมื่อ: 23 พฤศจิกายน 2008, 08:32:12 »

ขอบคุณคุณ jatuphum นะครับ กำลังศึกษาวิธีการ และ ประยุกต์อยู่
ขอบคุณคุณ Synchronize เช่นเดียวกันครับ ขอลองทั้ง 2 วิธี
T-T เล่นที่นี่ ไม่เคยผิดหวังจริงๆ
บันทึกการเข้า

onokung
คนรักเสียว
*

พลังน้ำใจ: 2
ออฟไลน์ ออฟไลน์

กระทู้: 198



ดูรายละเอียด เว็บไซต์
« ตอบ #14 เมื่อ: 28 พฤศจิกายน 2008, 02:01:10 »

ว่าแต่ไมผมอ่านแ้้ล้วยังงงกับโจทย์อยู่เลยอ่า  Tongue
บันทึกการเข้า

Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« ตอบ #15 เมื่อ: 28 พฤศจิกายน 2008, 10:28:28 »

เกี่ยวกับเรื่อง ฐานข้อมูล กับ ตาราง
ตอนนี้มีตารางข้อมูล ที่ได้มาโดยการ 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
บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์