PDA

نسخه کامل مشاهده نسخه کامل : join کردن در mysql



hamedarian2009
28-11-2012, 11:13
با سلام
کسی میتونه منو راهنمایی کنه؟

hamedarian2009
30-11-2012, 12:37
وقتی میخام join کنم این پیغام خطارو میده :

Error SQL query:
ALTER TABLE ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] man%2F5.5%2Fen%2Falter-table.html&token=1f868cd3914894cb55814638e53cd687) `customers` ADD FOREIGN KEY ( `customerid` ) REFERENCES `laptop`.`orders` (
`customerid`
) ON DELETE ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] man%2F5.5%2Fen%2Fdelete.html&token=1f868cd3914894cb55814638e53cd687) RESTRICT ON UPDATE ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] man%2F5.5%2Fen%2Fupdate.html&token=1f868cd3914894cb55814638e53cd687) RESTRICT ;

MySQL said: [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] man%2F5.5%2Fen%2Ferror-messages-server.html&token=1f868cd3914894cb55814638e53cd687)
#1452 - Cannot add or update a child row: a foreign key constraint fails (`laptop`.<result 2 when explaining filename '#sql-a08_5b'>, CONSTRAINT `#sql-a08_5b_ibfk_1` FOREIGN KEY (`customerid`) REFERENCES `orders` (`customerid`))

neopersia
01-12-2012, 11:20
سلام
این که شما انجام دادید جوین کردن نیست. این کلید خارجی به جدولها اضافه میکنه که دو تا جدول رو با هم مرتبط میکنه. برای جوین کردن لزوماً نیاز نیست کلید خارجی وجود داشته باشه. ضمن اینکه کلید خارجی در همه انجین های mysql قابل استفاده نیست. مهمترینش myisam هست که کلید خارجی رو نادیده میگیره

برای جوین کردن اینطور که از کدتون میشه برداشت کرد میتونید از این کوئری استفاده کنید (فیلدها رو باید مطابق نیازتون ویرایش کنید و احتمالاً WHERE هم اضافه کنید...):

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

hamedarian2009
01-12-2012, 18:28
خب من میخام دوتا جدولو بهم ربط بدم که آخرش وقتی دیاگرامشو بیارم جدولا با یک خط به یکدیگر متصل باشن .
اینو تا sql server انجام دادم ولی اینجا نمیشه

neopersia
02-12-2012, 19:29
خوب پس باید چند نکته رو در نظر بگیرید:
اول اینکه انجینی که استفاده میکنید باید InnoDB باشه.
بعد هم چک کنید که نوع فیدلها در هر دو جدول یکسان باشه.
در نهایت هم بهتره که جدول ها خالی باشه. چون اگر خالی نباشه و اطلاعاتی که داخلش هست معتبر نباشه (مثلاً یک کلید استفاده شده باشه که در جدول مرجع وجود نداشته باشه) همین ارور رو که گذاشتید میده و کلید خارجی اضافه نمیشه.
اگر به هر دلیلی نمیتونید جدول رو خالی کنید باید چک کنید که همه رکوردهای جدولی که کلید خارجی داره معتبر باشند.

hamedarian2009
03-12-2012, 11:35
خوب پس باید چند نکته رو در نظر بگیرید:
اول اینکه انجینی که استفاده میکنید باید InnoDB باشه.
بعد هم چک کنید که نوع فیدلها در هر دو جدول یکسان باشه.
در نهایت هم بهتره که جدول ها خالی باشه. چون اگر خالی نباشه و اطلاعاتی که داخلش هست معتبر نباشه (مثلاً یک کلید استفاده شده باشه که در جدول مرجع وجود نداشته باشه) همین ارور رو که گذاشتید میده و کلید خارجی اضافه نمیشه.
اگر به هر دلیلی نمیتونید جدول رو خالی کنید باید چک کنید که همه رکوردهای جدولی که کلید خارجی داره معتبر باشند.
خیلی خیلی ممنون
من همه مواردو درست انجام داده بودم فقط جدولم چون پر بود این ارور رو میداد. جداولو خالی کردم درست شد.
فقط یک سوال دیگه تو my sql چطوری دیاگرامشو ببینیم جوری که ارتباط جداولو بهم نشون بده تو sql server انجام دادم ولی my sql نمیدونم کجاست؟

neopersia
03-12-2012, 12:11
mysql فقط سروره و gui نداره
برای رابط گرافیکی میتونید از نرم افزارهای دیگه استفاده کنید. من از navicat استفاده میکنم. فکر میکنم mysql workbench هم چنین امکانی داشته باشه