ขอความช่วยเหลือเรื่องเงื่อนไข PHP+Mysql ทีครับ

เริ่มโดย $100perday, 23 กุมภาพันธ์ 2013, 11:16:01

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

$100perday

คือผมมีตารางชื่อว่า products
ประกอบด้วยฟิลด์
1. cateid หมวดสินค้า
2. productname ชื่อสินค้า

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

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

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

รบกวนทีนะครับ :wanwan017:
เหนื่อย..

zankumuro


$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 />';
   }
}
อย่าเชื่อผมมาก ผมมันมั่ว.....ฮ่าๆ

ฝาก Like แฟนเพจหน่อยครับ
https://www.facebook.com/devsignup

ข่าวสารวงการเกมส์ ทริปทริคต่างๆ เกมส์แจกฟรี
https://www.wecanplay.in.th/

$100perday

อ้างถึงจาก: 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 />';
   }
}


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

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

MapTwoZa

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
Good code quality Developer :D

MapTwoZa

ไปลองมาอีกแบบ อันนี้จะเอากี่ 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
Good code quality Developer :D

$100perday

อ้างถึงจาก: 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

ขอบคุณมากครับ :wanwan017:
เหนื่อย..