Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > เหมือนกันแสดงอันเดียว // เริ่มจาก Query ข้อมูลเพื่อหาว่าพนักงานแต่ละคนอยู่ในกลุ่มงานอะไรบ้าง $result



 

เหมือนกันแสดงอันเดียว // เริ่มจาก Query ข้อมูลเพื่อหาว่าพนักงานแต่ละคนอยู่ในกลุ่มงานอะไรบ้าง $result

 



Topic : 018914

Guest




// เริ่มจาก Query ข้อมูลเพื่อหาว่าพนักงานแต่ละคนอยู่ในกลุ่มงานอะไรบ้าง
$result1 = QueryData($dbname3, jdjs_especial, "WHERE userID='$userID'");
$CountM=0;
while($row1=mysql_fetch_array($result1))
{
$right1[]=$row1[jdsID];
$CountM++;
}

// ผลที่ได้คือผมเก็บกลุ่มงานที่พนักงานคนนั้น ๆ อยู่ เป็นอาร์เรย์ไว้ คือ $right1[]


// จากนั้นผมก็มาดูที่รายวิชาที่พนักงานคนนั้น ๆ ต้องเข้าเรียน
$CountN=0;
for($j=0;$j<$CountM;$j++)
{
$result2 = QueryData($dbname3, jdjs_spcourse, "WHERE jdsID='$right1[$j]' AND msnID<>4 AND cgID='4'");
while($row2 = mysql_fetch_array($result2))
{
$right2[]=$row2[clID];
$CountRs++;
}
}

for($j=0;$j<$CountN;$j++)
{
echo $right2[$j];
echo "<br>";
}

// แต่ที่นี้คือว่าผลที่ได้เป็นดังนี้ เช่น
ID ขอวิชา ID กลุ่มวิชา
1 1
3 1
6 1
1 3
5 3
6 3



คือว่าผมต้องการให้มันแสดง ID ของวิชาที่ซ้ำกันออกมาอันเดียวนะครับแต่ไม่ออก คือลองใช้ DINTINCT แล้วก็ไม่ออกเพราะตอน where นั้นผมแวร์ที่ userID ของพนักงานซึ่งพนักงานคนนั้น ๆ จะถูกระบุมากกว่า 1 กลุ่มวิชาครับ


Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 13 มี.ค. 2551 08:16:13 By : com1com View : 1983 Reply : 10
 

 

No. 1

Guest


group by field






Date : 13 มี.ค. 2551 10:02:35 By : กบนอกกะลา
 


 

No. 2

Guest


ไม่ได้ครับ

คือว่าดูโค๊ดอย่างง่าย ๆ ด้านล่างนี้นะครับ
เริ่มจากผมไป Query ข้อมูลเพื่อหากลุ่มวิชาที่ตรงกับพนักงาน และจากนั้นก็ไป Query ข้อมูลในรตารางวิชาที่ตรงกับกับกลุ่มวิชาที่พนักงานนั้น ๆ ต้องเรียน ถ้าใช้ Group by ไม่ได้ครับและใช้ DISTINCT ก็ไม่ได้เพราะมัน where ที่ userID มันเลขนำมาแสดงทั้งหมด

ถ้าในตารางแรกที่เข้าไป Query มี 2 ID ที่พนักงาน (userID) นั้นมีเช่น
1,3 จากนั้นก็ไป Query ข้อมูลในตารางที่ 2 เพื่อแสดงรายชื่อวิชาที่ตรงกับ ID ของตารางแรกและผลที่ได้คคือ

ID ตารางแรก IDตารางที่สอง
1 1
1 2
1 3
2 1
2 5
2 6

จะเห็นว่า ID ตารางที่สองมันมีซ้ำกันนะครับ ที่นี้ผมต้องการให้มันแสดง ID ที่สองที่ซ้ำกันออกมาแค่ อันเดียว เพราะเวลานำไปแสดงผลจะนำ ID ที่ตารางที่สองไปแสดงครับ

$strSql1 = "SELECT * FROM jdjs_especial WHERE userID='$userID'";
$result1 = mysql_db_query($dbname3, $strSql1);

while($row1=mysql_fetch_array($result1))
{

$strSql 2 = "SELECT DISTINCT clID FROM jdjs_spcourse WHERE jdsID='$row1[jdsID]' AND msnID<>4 AND cgID='4'";
$result2 = mysql_db_query($dbname3, $strSql);
while($row2 = mysql_fetch_array($result2))
{
echo $row2[clID];
echo "<br>";
}
}

Date : 13 มี.ค. 2551 10:35:57 By : com1com
 

 

No. 3

Guest


group by ซ้อน group by
Date : 13 มี.ค. 2551 15:33:27 By : กบนอกกะลา
 


 

No. 4

Guest


ซ้อนยังงัยครับ

Date : 13 มี.ค. 2551 15:45:52 By : com1com
 


 

No. 5

Guest


select*from table where field=$var group by field;
while($row=....){
$var1= $row['field1'];
select*from table2 where field = $var1 group by field;
while($row2='''){

}
}

ใช้วิธีคุณก็ได้ครับ เพียงแต่ว่าเอาตั้วแปรจากคิวรี่แรกมาใช้กับคิวรี่สองด้วย ไม่งั้น ค่ามันไม่ตรงกันแน่นอน

Date : 13 มี.ค. 2551 16:03:55 By : กบนอกกะลา
 


 

No. 6

Guest


ตารางที่ 1
jdsID userID
1 --> s0001
2 --> s0001
3 --> s0005
4 --> s0004

ตารางที่ 2
no jdsID clID
1 --> 1 --> 1
2 --> 1 --> 2
3 --> 1 --> 3
4 --> 2 --> 1
5 --> 2 --> 5
6 --> 2 --> 6
7 --> 3 --> 7
8 --> 3 --> 2

จะเห็นว่าตารางแรกนั้นพนักงานที่มีรหัส s0001 นั้นจะตรงกับ jdsID 1 และ 2 นะครับ

ในการคิวรี่ครั้งแรกนั้นก็จะรู้ว่าพนักงานคนนั้น ๆตรงกับรหัสกลุ่มวิชาอะไรบ้าง
$strSql = "SELECT * FROM $table1 WHERE userID=s0001";
$result = mysql_db_query($dbname1, $strSql);
while($row = mysql_fetch_array($result))
{
$jdsID = $row[jdsID];

//คิวรี่ครั้งที่สองนั้นจะนำ jdsID ไปหาว่าตรงกับวิชาไหนบ้าง
$strSql1="SELECT * FROM $table2 WHERE jdsID='$jdsID' GROUP BY clID";
$result1=mysql_db_query($dbname1, $strSql1);
while($row1=mysql_fetch_array($result1))
{
echo $clID = $row1[clID];
echo "<br>";
}

}


ค่าที่ได้คือ
1
2
3
1
5
6

จะเห็นว่าค่าที่ได้มานั้นจะมีที่ซ้ำกันคือ 1 ที่ใช้ group by ไม่ได้นั้นเพราะว่าค่าที่ได้จากการคิวรี่ครั้งแรกนั้นมันจะได้
1 และ 2 มานะครับ...พอาเรานำค่านั้นมา where ที่การคิวรี่ครั้งที่สองนั้นมันก็จะ where ที่ค่าที่เรากำหนดมา ดังนั้นการใช้ group by มันไม่ได้ผลครับ

พอจะมีวิธีมั๊ยครับ...ชี้นำหน่อย


Date : 14 มี.ค. 2551 09:13:13 By : com1com
 


 

No. 7

Guest


ใช้ subquery ครับ
SELECT `noID`,`jdsID`,`clID` FROM `clid` WHERE `jdsID` in (SELECT `jdsID` FROM `userid` WHERE `userID`='s0001') group by clID order by clID
ตาราง1 clID
ตาราง1 userid
จะได้ผลลัพธ์
1
2
3
5
6
ครับ
Date : 14 มี.ค. 2551 09:34:39 By : takereu
 


 

No. 8

Guest


ใช้ subquery ครับ
SELECT `noID`,`jdsID`,`clID` FROM `clid` WHERE `jdsID` in (SELECT `jdsID` FROM `userid` WHERE `userID`='s0001') group by clID order by clID
ตาราง1 clID
*ตาราง2 userid
จะได้ผลลัพธ์
1
2
3
5
6
ครับ

*แก้ไข
Date : 14 มี.ค. 2551 09:37:31 By : takereu
 


 

No. 9

Guest


หรือถ้าจะเอาเฉพาะฟิลด์ clID
ไม่ต้องใช้ group by ก็ได้
ใช้ distinct แทน แบบนี้ครับ
SELECT distinct `clID` FROM `clid` WHERE `jdsID` in (SELECT `jdsID` FROM `userid` WHERE `userID`='s0001') order by clID
ลองดู
Date : 14 มี.ค. 2551 09:42:29 By : takereu
 


 

No. 10

Guest


ได้แล้วครับ....ผมเลือกวิธีที่ "ความคิดเห็นที่ 9 " ครับ ขอบคุณคุณ takereu มาก ๆ ครับ ยังไงช่วยอธิบายอีกนิดนึง...ว่ามีความหาหมายว่ายังไงครับ


ขอบคุณมาก ๆ ๆ ๆ ๆ




แล้วถ้า
ฐานข้อมูลที่ 1
ตาราง courselist1 มีฟิลด์ดังนี้

clID
1
2
3
4
5

เวลาใช้ while ลูป ให้แสดงผลออกมาก็จะได้ค่า
1
2
3
4
5

ฐานข้อมูลที่ 2
ตาราง courselist2 มีฟิลด์ดังนี้

slID
1
2
3
4
5
6
เวลาใช้ while ลูป ให้แสดงผลออกมาก็จะได้ค่า
1
2
3
4
5
6


ถ้าเราต้องการจะ compare กันโดยข้อมูลที่ซ้ำกันแล้วจะไม่นำมาแสดงในลักษณะนี้ครับ
ฝั่งซ้ายเก็บข้อมูลของฐานข้อมูลที่ 1 | ฝั่งขวาเก็บข้อมูลของฐานข้อมูลที่ 2
1 --> 1
2 --> 2
3 --> 3
4 --> 4
5 --> 6

ความหมายก็คือฝั่งซ้ายคือวิชาที่เรียนไแล้วเมื่อเทียบกับฝั่งขวาจะต้องให้เหลือวิชาที่ยังไม่ได้เรียน

ฝั่งซ้ายเก็บข้อมูลของฐานข้อมูลที่ 1 | ฝั่งขวาเก็บข้อมูลของฐานข้อมูลที่ 2
1 --> 6
2
3
4
5


จะต้องใช้คำสั่งอะไรครับ
Date : 14 มี.ค. 2551 10:18:09 By : com1com
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : เหมือนกันแสดงอันเดียว // เริ่มจาก Query ข้อมูลเพื่อหาว่าพนักงานแต่ละคนอยู่ในกลุ่มงานอะไรบ้าง $result
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่