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

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

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingขอความช่วยเหลือเรื่องเงื่อนไข PHP+Mysql ทีครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ขอความช่วยเหลือเรื่องเงื่อนไข PHP+Mysql ทีครับ  (อ่าน 1455 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
$100perday
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,032



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

เหนื่อย..
zankumuro
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,036



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

อย่าเชื่อผมมาก ผมมันมั่ว.....ฮ่าๆ

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

ข่าวสารวงการเกมส์ ทริปทริคต่างๆ เกมส์แจกฟรี
https://www.wecanplay.in.th/
$100perday
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,032



ดูรายละเอียด
« ตอบ #2 เมื่อ: 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 สองตัว เท่านั้นอ่ะครับ
บันทึกการเข้า

เหนื่อย..
MapTwoZa
ก๊วนเสียว
*

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

กระทู้: 366



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

Good code quality Developer Cheesy
MapTwoZa
ก๊วนเสียว
*

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

กระทู้: 366



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

Good code quality Developer Cheesy
$100perday
หัวหน้าแก๊งเสียว
*

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

กระทู้: 2,032



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

เหนื่อย..
หน้า: [1]   ขึ้นบน
พิมพ์