ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: $100perday ที่ 23 กุมภาพันธ์ 2013, 11:16:01



หัวข้อ: ขอความช่วยเหลือเรื่องเงื่อนไข PHP+Mysql ทีครับ
เริ่มหัวข้อโดย: $100perday ที่ 23 กุมภาพันธ์ 2013, 11:16:01
คือผมมีตารางชื่อว่า products
ประกอบด้วยฟิลด์
1. cateid หมวดสินค้า
2. productname ชื่อสินค้า

ตัวอย่างรายการ

cateid  |  producsname
---------------------------
1   |  ปากกาเขียว
1   |  ปากกาแดง
1   |  ปากกาดำ
1   |  ปากกาม่วง
2   |  ดินสอเขียว
2   |  ดินสอแดง
2   |  ดินสอดำ
2   |  ดินสอม่วง
3   |  ยางลบเขียว
3   |  ยางลบแดง
3   |  ยางลบดำ
3   |  ยางลบม่วง

ความต้องการคือ ต้องการแสดงข้อมูลใน ตาราง products มา cateid ละ 2 รายการเท่านั้น และแสดงแบบสุ่มอ่ะครับ
ไม่ทราบว่าเขียน code ยังไงครับ

รบกวนทีนะครับ :wanwan017:


หัวข้อ: Re: ขอความช่วยเหลือเรื่องเงื่อนไข PHP+Mysql ทีครับ
เริ่มหัวข้อโดย: zankumuro ที่ 23 กุมภาพันธ์ 2013, 11:30:57
โค๊ด:
$categoryQuery = mysql_query("SELECT cateid FROM Table_Category");
while($category = mysql_fetch_array($categoryQuery)){
   $productQuery = mysql_query("SELECT * FROM Table_products WHERE cateid='".$category['cateid']."' ORDER BY RAND() LIMIT 0, 2");
   while($products = mysql_fetch_array($productQuery)){
      echo $products['producsname'].'<br />';
   }
}


หัวข้อ: Re: ขอความช่วยเหลือเรื่องเงื่อนไข PHP+Mysql ทีครับ
เริ่มหัวข้อโดย: $100perday ที่ 23 กุมภาพันธ์ 2013, 11:46:20
โค๊ด:
$categoryQuery = mysql_query("SELECT cateid FROM Table_Category");
while($category = mysql_fetch_array($categoryQuery)){
   $productQuery = mysql_query("SELECT * FROM Table_products WHERE cateid='".$category['cateid']."' ORDER BY RAND() LIMIT 0, 2");
   while($products = mysql_fetch_array($productQuery)){
      echo $products['producsname'].'<br />';
   }
}

งงนิดนึงครับ แต่ก็ขอบคุณครับ

คืดตามที่ผมยกตัวอย่างจะมี 12 รายการ
ถ้าเขียนเงื่อนไขแล้ว จะได้แค่ 6 รายการมาแสดงครับ คือ หมวดที่ 1 สองตัว หมวดที่ 2สองตัว และ หมวดที่ 3 สองตัว เท่านั้นอ่ะครับ


หัวข้อ: Re: ขอความช่วยเหลือเรื่องเงื่อนไข PHP+Mysql ทีครับ
เริ่มหัวข้อโดย: MapTwoZa ที่ 23 กุมภาพันธ์ 2013, 15:50:57
select * from (
select id,id2 as val1,
(select id2 from test where id = t.id and id2 != t.id2 order by rand() limit 1) as val2
from test t
order by id, rand() ) as result
group by id



ปล. เปลี่ยน id เป็น cateid, id2 เป็น productname, test เป็น products


หัวข้อ: Re: ขอความช่วยเหลือเรื่องเงื่อนไข PHP+Mysql ทีครับ
เริ่มหัวข้อโดย: MapTwoZa ที่ 23 กุมภาพันธ์ 2013, 16:30:17
ไปลองมาอีกแบบ อันนี้จะเอากี่ record ก็ได้ กำหนดตรง where ตัวสุดท้าย
## ชื่อ column + table ไปแก้เอง ตารางที่ผมเทส tablename = test, columns = {id,id2}



select * from (
select *,
@num := if(@some_id = id, @num := @num + 1, 1) as row_num,
@some_id := id as some_id
 from (
select id,id2
from test t
order by id, rand() ) as a,  (SELECT @some_id:=0, @num:=0) as init ) as b
where row_num <= 2


หัวข้อ: Re: ขอความช่วยเหลือเรื่องเงื่อนไข PHP+Mysql ทีครับ
เริ่มหัวข้อโดย: $100perday ที่ 23 กุมภาพันธ์ 2013, 17:18:17
ไปลองมาอีกแบบ อันนี้จะเอากี่ record ก็ได้ กำหนดตรง where ตัวสุดท้าย
## ชื่อ column + table ไปแก้เอง ตารางที่ผมเทส tablename = test, columns = {id,id2}



select * from (
select *,
@num := if(@some_id = id, @num := @num + 1, 1) as row_num,
@some_id := id as some_id
 from (
select id,id2
from test t
order by id, rand() ) as a,  (SELECT @some_id:=0, @num:=0) as init ) as b
where row_num <= 2

ขอบคุณมากครับ :wanwan017: