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 > ขอถามเกี่ยวการ insert ข้อมูลที่ไม่ซ้ำหน่อยครับ คือว่า...



 

ขอถามเกี่ยวการ insert ข้อมูลที่ไม่ซ้ำหน่อยครับ คือว่า...

 



Topic : 076936



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



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




พอจะมีคำสั่งที่สามารถ insert ข้อมูลเข้า Table โดยตรวจสอบว่าข้อมูลนั้นไม่ได้มีอยู่แล้ว (คือไม่ซ้ำอ่ะครับ) ในคำสั่ง SQL ชุดเดียวไหมครับ
ตัวอย่างเช่น

table castomer

ID NAME
001 AA
002 BB
004 CC

คือจะ insert ข้อมูลเข้าไป อีกคือ ID 001 NAME AA ถ้ามีอยูแล้วก็ไม่ให้ insert อ่ะครับ

แบบเดิมคือ
เราต้อง serect มาก่อน SQL หนึ่ง แล้ว ก็มา insert อีกทีหนึ่ง ความต้องการอยากให้มันเสร็จใน SQL ตัวเดียวเลยอ่ะครับ

ไม่แน่ใจว่ามีคำสั่งแบบที่ต้องการเปล่าน่ะครับ ถ้ามีเราจะได้ไม่เขียนคำสั่งให้ยืดยาว เพราะผมได้ความรู้จาก web นี้มากเดิมเขียนคำสั่งในการ
ทำอะไรต่างๆๆ ยาวมาก กว่าจะได้ข้อมูลออกมา พอมาดูใน web นี้ Search หาตัวอย่างที่เราต้องการ ก็เจอตัวอย่าง เขียนง่ายกว่าแบบที่เราเขียนมาอีก ทำได้เกิดความรู้ใหม่ๆๆอ่ะครับ

ขอบคุณล่วงหน้าครับ



Tag : PHP, HTML/CSS







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-04-11 11:04:16 By : aimoomoo View : 9262 Reply : 11
 

 

No. 1

Guest


ต้องกำหนดที่ Type ของชนิดข้อมูลค่ะ ให้เป็น PK อ่ะค่ะ
แต่ไม่รุว่าทำแบบอื่นได้หรือป่าวอ่ะคะ่






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-04-11 11:57:44 By : penpimonmink
 


 

No. 2



โพสกระทู้ ( 4,169 )
บทความ ( 7 )

Hall of Fame 2012

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


Code (PHP)
$Name=$_POST['Name'];
$Result=mysql_query("SELECT * FROM tb_member WHERE Name='".$Name."'") or die (mysql_error());
$Num_Rows=mysql_num_rows($Result);

if($Num_Rows==0){
  echo "ท่านสามารถเพิ่มได้";
}else{
 echo "มีรายละเอียดอยู่ในระบบแล้ว";
}



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-04-11 12:43:00 By : Ex-[S]i[L]e[N]t
 

 

No. 3



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



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


จาก คุณ Ex-[S]i[L]e[N]t No.2

ยังงัยก็ต้องเขียน Insert อีกทีอยู่ดี
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-04-11 13:26:22 By : aimoomoo
 


 

No. 4



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



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


ถ้าแค่ มีข้อมูล แล้ว Insert ไม่ได้ หากไม่มี Inserได้
ก็ทำตาม No.2 ก็ได้แล้วนิครับ
ใช้ SQL ตัวเดียว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-04-11 13:41:26 By : 50121680
 


 

No. 5



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



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


คือว่า..... ตอนนี้ขอมูล อยู่ประมาณ แสนกว่าเรคอด

เขียน select เพื่อหาข้อมูลซ้ำว่ามีไหม ถ้าไม่มี ก็มาเขียนคำสั่ง Insert อีกที
ที่ผมกลัวคือ กลัวมันช้าครับ ไม่มีจุดประสงอื่น เลยลองตั้ง กระทู้ถามดู เพื่อมีวิธี ดังที่กล่าวไว้ในหัวกระทู้

ปัญหาที่นี่ พอโปรแกรมอารายที่ทำงานช้าหน่อยก็เริ่มบ่น ผมเขีนโปรแกรมดเลยต้องหาวิธีที่ ซอฟ ที่สุด


ประวัติการแก้ไข
2012-04-11 13:47:49
2012-04-11 13:50:51
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-04-11 13:47:06 By : aimoomoo
 


 

No. 6



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



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


ใช่แบบนี้ป่าวครับ ดู link
INSERT IGNORE

http://www.tutorialspoint.com/mysql/mysql-handling-duplicates.htm
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-04-11 13:58:01 By : grandraftz
 


 

No. 7



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



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


ตอบความคิดเห็นที่ : 5 เขียนโดย : aimoomoo เมื่อวันที่ 2012-04-11 13:47:06
รายละเอียดของการตอบ ::
การเขียน select เพิ่มมาแค่นี้ผมว่าไม่น่าจะมีผลนะครับ
เพราะว่าบางทีการเขียนคิวรี่แยกๆ กันคิวรี่หลายครั้งเร็วกว่าการเขียนคิวรี่ยาวๆแล้วคิวรี่ครั้งเดียวก็มี
*ส่วนปัญหาที่ว่าช้าก็เริ่มบ่นกันอันนี้แก้ยังไงก็ไม่หายหรอกครับ อิๆๆ ที่บริษัทผมก็เป็น
ถึงแม้ว่าทำโปรแกรมที่สามารถทำงานได้เร็วก็ยังมีบ่นเรื่องอื่นๆ อยู่ดีอะแหละ แหะๆ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-04-11 14:16:44 By : naskw
 


 

No. 8



โพสกระทู้ ( 4,169 )
บทความ ( 7 )

Hall of Fame 2012

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


ตามความคิดเห็นของผมนะ ช้าหรือไม่ช้า มันเกี่ยวกับขนาดข้อมูลเยอะขนาดไหนมากกว่า

อย่างไรก็ตาม ถ้าจาทำการเช็คแต่ละครั้ง มันต้องวิ่งให้ครบทุกตัวอยู่แล้วหนิ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-04-11 15:50:43 By : Ex-[S]i[L]e[N]t
 


 

No. 9



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



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


อันนี้ delphi ado คงไม่ต่างกับ php มาหนักเรื่อง select
ประเด็นแปลกคือ 2 ฟังก์ชั่นนี้ต่างกันตรงใช้ WHERE 1 ตัว กับ 2 ตัว
ผมจะเพิ่มฐานข้อมูลหาก 2 เงื่อนไขไม่มีในฐาน
หากใช้ฟังก์ชั่น selete_ADO ต้องเรียกใช้ 2 ครั้ง
หากใช้ฟังก์ชั่น selete_ADO2 ต้องเรียกใช้ 1 ครั้งเท่านั้น

การเรียกใช้ selete_ADO 2ครั้ง ทำงานไวกว่า selete_ADO2

selete_ADO ใช้เวลา 2.12 นาที
selete_ADO2 ใช้เวลา 4.20 นาที

Code (PHP)
Function TForm3.selete_ADO(const ta,va:string):boolean;
var I:integer;
begin
  with ADOQuery1 do
  begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select '+ ta);
    ADOQuery1.SQL.Add('from songx');
    ADOQuery1.SQL.Add('where ' + ta +' = ' + QuotedStr(va));
    ADOQuery1.Open;
    I:=ADOQuery1.RecordCount;
    if (I = 0) then
    begin
      Result := False;
      count5:=count5+1;//ไม่ซ้ำ
    end;
    if (I > 0) then
    begin
       Result := True;
       Count6:=Count6+1; //ซ้ำ
    end;
    ADOQuery1.Close;
  end;
end;

Function TForm3.selete_ADO2(const ta1,va1,ta2,va2:string):boolean;
var I:integer;
begin
  with ADOQuery1 do
  begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('SELECT COUNT(*) as xxxx');
    ADOQuery1.SQL.Add('from songx');
    ADOQuery1.SQL.Add('where ' + ta1 +' = ' + QuotedStr(va1));
    ADOQuery1.SQL.Add('AND ' + ta2 +' = ' + QuotedStr(va2));
    ADOQuery1.Open;
    I:=ADOQuery1.FieldByName('xxxx').AsInteger ;
    if (I = 0) then
    begin
      Result := False;
      count5:=count5+1;//ไม่ซ้ำ
    end;
    if (I > 0) then
    begin
       Result := True;
       Count6:=Count6+1; //ซ้ำ
    end;
    ADOQuery1.Close;
  end;
end;



ประวัติการแก้ไข
2012-10-12 03:06:50
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-10-12 03:02:55 By : bonparadorn
 


 

No. 10



โพสกระทู้ ( 5,105 )
บทความ ( 4 )

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

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


ถ้าเป็นการทำงานที่ไม่ได้ถูกสั่งหรือบังคับมาว่าต้องทำการ insert แค่ครั้งเดียว
ผมว่าให้มีคิวรี่ก่อนไม่เป็นไรหรอกครับมันไม่ช้ามากเท่าไรครับ ง่ายต่อการเขียนและใช้งานได้ง่าย ๆ ....
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-10-12 06:41:21 By : apisitp
 


 

No. 11

Guest


ตัวอย่างของผมครับ ไม่รู้ว่าจะใช้กับ DB ของท่านได้หรือเปล่า
คำสั่ง Not IN ถ้ามีแล้วในตารางนั้นก็ไม่ต้อง Insert

insert into promotionreserve
(itemcode,itemname,proprice,unitcode,procode)
select itemcode,itemname,PriceperUnit,unitcode,'pro-085'
from BCPromotionSub where Code='pro-085' and ItemCode not in (select ItemCode from
promotionreserve)
order by itemcode
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-03-20 13:03:02 By : attadev.net
 

   

ค้นหาข้อมูล


   
 

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