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,037

HOME > PHP > PHP Forum > ไม่ให้ข้อมูลขึ้นซ้ำหลายเรคคอร์ด โดยการ JOIN ตารางมีวิธีแก้ไขไหมครับ



 

ไม่ให้ข้อมูลขึ้นซ้ำหลายเรคคอร์ด โดยการ JOIN ตารางมีวิธีแก้ไขไหมครับ

 



Topic : 064757



โพสกระทู้ ( 426 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook



ไม่ให้ข้อมูลขึ้นซ้ำหลายเรคคอร์ด โดยการ JOIN ตารางมีวิธีแก้ไขไหมครับ ผมเคยใช้ทั้ง DISTINCT และ GROUP BY ก็เหมือนเดิมครับ
ตาราง detail
id_detail | ThaiName
1 | AAA
2 | BBB

ตาราง tel
id_tel | tel | id_detail
1 | 021234567 | 1
2 | 021234568 | 1
3 | 021234569 | 1
4 | 029001002 | 2

ผลลัพธ์จาก CODE ด้านล่างคือ
AAA 021234567
AAA 021234568
AAA 021234569
BBB 029001002
แต่ในความจริงผมอยากให้ AAA ขึ้นแค่บรรทัดเดียวครับ ไม่ต้องขึ้นซ้ำและหลายเบอร์เกิน เพราะผมจะนำไปประยุกต์ใช้กับการ Search ครับ ถ้าออกอย่างงี้จริง ถ้าธุรกิจนึงมีเป็น 100 เบอร์ ก็จะขึ้นมาเยอะแยะเลยครับ เดี๋ยวผมค่อยไปจัดการโชว์ทุกเบอร์ในรายละเอียดอีกทีเองครับ

Code (PHP)
<?
$strSQL = "SELECT  detail.ThaiName,tel.tel FROM detail LEFT JOIN tel ON detail.id_detail=tel.id_detail WHERE detail.Enable='T' AND detail.IsActive='T' GROUP BY detail.ThaiName, tel.tel";
$objQuery = mssql_query($strSQL) or die ("Error Query [".$strSQL."]");
echo $strSQL;
while($objResult = mssql_fetch_array($objQuery))
{
echo "<br>";
echo $objResult["ThaiName"].$objResult["tel"];
}
?>




Tag : PHP, Ms SQL Server 2008







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-08-15 14:07:44 By : MyZeus View : 1335 Reply : 12
 

 

No. 1



โพสกระทู้ ( 3,750 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์
Facebook

ใช้ distinct






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-15 14:19:21 By : Dragons_first
 


 

No. 2



โพสกระทู้ ( 426 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

เหมือนเดิมครับ
SELECT DISTINCT(tel.id_detail),tel.tel,detail.ThaiName FROM detail LEFT JOIN tel ON detail.id_detail=tel.id_detail WHERE detail.Enable='T' AND detail.IsActive='T'
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-15 14:56:45 By : MyZeus
 

 

No. 3



โพสกระทู้ ( 1,095 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


SELECT DISTINCT(tel.id_detail),tel.tel,detail.ThaiName FROM detail INNER JOIN tel ON detail.id_detail=tel.id_detail WHERE detail.Enable='T' AND detail.IsActive='T'

เปลี่ยนจาก LEFT เป็น INNER ได้ไหม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-15 15:04:15 By : ไวยวิทย์
 


 

No. 4



โพสกระทู้ ( 426 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

เหมือนเดิมเลยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-15 15:13:11 By : MyZeus
 


 

No. 5



โพสกระทู้ ( 1,095 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


SELECT detail.ThaiName, tel.tel FROM detail INNER JOIN tel ON detail.id_detail=tel.id_detail WHERE detail.Enable='T' AND detail.IsActive='T' GROUP BY detail.ThaiName

แบบนี้ล่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-15 15:25:10 By : ไวยวิทย์
 


 

No. 6



โพสกระทู้ ( 426 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

error ครับ มันบอกต้องใส่ tel.tel ที่ group by ด้วย
SELECT detail.ThaiName, tel.tel FROM detail INNER JOIN tel ON detail.id_detail=tel.id_detail WHERE detail.Enable='T' AND detail.IsActive='T' GROUP BY detail.ThaiName,tel.tel
ผมก็ใส่ไปละ และแล้วมันก็เหมือนเดิมครับ T_T
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-15 15:35:31 By : MyZeus
 


 

No. 7



โพสกระทู้ ( 1,095 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ตาราง detail
Code (PHP)
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for detail
-- ----------------------------
DROP TABLE IF EXISTS `detail`;
CREATE TABLE `detail` (
  `id_detail` int(11) NOT NULL auto_increment,
  `thainame` text,
  PRIMARY KEY  (`id_detail`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of detail
-- ----------------------------
INSERT INTO `detail` VALUES ('1', 'AAA');
INSERT INTO `detail` VALUES ('2', 'BBB');
INSERT INTO `detail` VALUES ('3', 'CCC');
INSERT INTO `detail` VALUES ('4', 'DDD');
INSERT INTO `detail` VALUES ('5', 'EEE');


ตาราง tel
Code (PHP)
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for tel
-- ----------------------------
DROP TABLE IF EXISTS `tel`;
CREATE TABLE `tel` (
  `id_tel` int(10) NOT NULL auto_increment,
  `tel` text,
  `id_detail` int(10) default NULL,
  PRIMARY KEY  (`id_tel`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tel
-- ----------------------------
INSERT INTO `tel` VALUES ('1', '085-111-2222', '1');
INSERT INTO `tel` VALUES ('2', '084-222-3333', '1');
INSERT INTO `tel` VALUES ('3', '085-333-4444', '1');
INSERT INTO `tel` VALUES ('4', '086-234-5678', '2');
INSERT INTO `tel` VALUES ('5', '088-999-5566', '1');



SQL ที่ผมลองเขียน มันก็ขึ้นชื่อร้านเดียว ถึงแม้มันจะมีหลายเบอร์โทร

SELECT detail.thainame, tel.tel FROM detail INNER JOIN tel ON detail.id_detail=tel.id_detail GROUP BY thainame
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-15 15:46:45 By : ไวยวิทย์
 


 

No. 8



โพสกระทู้ ( 3,750 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์
Facebook

ok จบป๊ะ....
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-15 16:02:25 By : Dragons_first
 


 

No. 9



โพสกระทู้ ( 426 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ของผมมันไม่ได้อ่าคับ

test
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-15 16:14:58 By : MyZeus
 


 

No. 10



โพสกระทู้ ( 1,095 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


Code (PHP)
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for detail
-- ----------------------------
DROP TABLE IF EXISTS `detail`;
CREATE TABLE `detail` (
  `id_detail` int(11) NOT NULL auto_increment,
  `thainame` text,
  `enable` text,
  `active` text,
  PRIMARY KEY  (`id_detail`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of detail
-- ----------------------------
INSERT INTO `detail` VALUES ('1', 'AAA', 'T', 'T');
INSERT INTO `detail` VALUES ('2', 'BBB', 'T', 'T');
INSERT INTO `detail` VALUES ('3', 'CCC', 'N', 'N');
INSERT INTO `detail` VALUES ('4', 'DDD', null, null);
INSERT INTO `detail` VALUES ('5', 'EEE', null, null);


Code (PHP)
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for tel
-- ----------------------------
DROP TABLE IF EXISTS `tel`;
CREATE TABLE `tel` (
  `id_tel` int(10) NOT NULL auto_increment,
  `tel` text,
  `id_detail` int(10) default NULL,
  PRIMARY KEY  (`id_tel`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tel
-- ----------------------------
INSERT INTO `tel` VALUES ('1', '085-111-2222', '1');
INSERT INTO `tel` VALUES ('2', '084-222-3333', '1');
INSERT INTO `tel` VALUES ('3', '085-333-4444', '1');
INSERT INTO `tel` VALUES ('4', '086-234-5678', '2');
INSERT INTO `tel` VALUES ('5', '088-999-5566', '1');
INSERT INTO `tel` VALUES ('6', '087-555-1111', '3');
INSERT INTO `tel` VALUES ('7', '082-111-3333', '3');


มีฟิว detail.enable และ detail.active
SELECT detail.thainame, tel.tel FROM detail INNER JOIN tel ON detail.id_detail=tel.id_detail WHERE detail.enable = 'T' AND detail.active = 'T' GROUP BY thainame

ไม่ต้องเอา tel มา GROUP BY ด้วยได้ไหม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-15 16:44:36 By : ไวยวิทย์
 


 

No. 11



โพสกระทู้ ( 426 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

แต่ของผมถ้า select ฟิวด์อะไรแล้ว ต้อง group by ฟิวด์นั้นด้วยครับ มันจึงต้องใส่ tel.tel ไปด้วย
ตอนนี้ผมทำได้แล้ว
Code (PHP)
select d.thainame, (select top 1 tel from tel where id_detail = d.id_detail) from detail d

แต่ติดตรงที่ผมไป echo ใน php ไม่ออกครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-16 20:01:05 By : MyZeus
 


 

No. 12

Guest


ขอบคุณครับผม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-10-15 22:08:55 By : เหน่ง
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ไม่ให้ข้อมูลขึ้นซ้ำหลายเรคคอร์ด โดยการ JOIN ตารางมีวิธีแก้ไขไหมครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 00
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 อัตราราคา คลิกที่นี่