چرا LIMIT 0 , 30 باعث اخلال در کار LEFT JOIN می شه؟
این کوئری یک ساعتی می شه منو درگیر خودش کرده!
حالت کلی کوئری به این صورته:
SELECT o.id1, p.title
FROM ordder o
LEFT JOIN product p
ON o.id1=p.id
WHERE (1=1 )
ORDER BY o.id1 DESC LIMIT 0 , 30
این کوئری بخاطر وجود LIMIT 0 , 30 اجرا نمی شه اما وقتی LIMIT 0 , 30 حذف می کنم کوئری بدون مشکل اجرا می شه
SELECT o.id1, p.title
FROM ordder o
LEFT JOIN product p
ON o.id1=p.id
WHERE (1=1 ) ORDER BY o.id1
مشکل چی می تونه باشه؟
نقل قول: چرا LIMIT 0 , 30 باعث اخلال در کار LEFT JOIN می شه؟
اینو امتحان کنید:
SELECT * FROM (SELECT `o`.`id1`, `p`.`title`
FROM `order` AS `o`
LEFT JOIN `product` AS `p`
ON `o`.`id1`=`p`.`id`) AS `temp`
ORDER BY `id1` DESC LIMIT 0 , 30
ضمناً همیشه عادت کنید Query رو با رعایت کامل استانداردها بنویسید. مثلاً حذف کلمه AS ممکنه در بعضی سرورها و نسخه های MySQL مشکلی ایجاد نکنه و بعضی جاها مشکل بوجود بیاره. پس عادت کنید همیشه حالتی که همه جا اجرا میشه رو استفاده کنید.
نقل قول: چرا LIMIT 0 , 30 باعث اخلال در کار LEFT JOIN می شه؟
مهندس این کوئری یه LEFT JOIN ساده هست و اگه ORDER BY o.id1 DESC LIMIT 0 , 30 حذف بشه بدون مشکل اجرا می شه
این ارور نمایش داده می شه:
#1064 - You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near '30' at line 1
دلیل این مشکل مشخص نیست؟
نقل قول: چرا LIMIT 0 , 30 باعث اخلال در کار LEFT JOIN می شه؟
یک Export از جدولهای order و product میگذارین تا تست کنم؟
نقل قول: چرا LIMIT 0 , 30 باعث اخلال در کار LEFT JOIN می شه؟
دستورتون رو با چه برنامه ای میفرستید؟
در یک session ه دیگه یا با یک برنامه دیگه تست کنید.فکر میکنم ادیتوری که دستور رو توش مینویسید ممکنه مشکل داشته باشه یا چند تا کارکتر نامرئی توش باشه.
نقل قول: چرا LIMIT 0 , 30 باعث اخلال در کار LEFT JOIN می شه؟
نقل قول:
نوشته شده توسط
idocsidocs
این کوئری یک ساعتی می شه منو درگیر خودش کرده!
حالت کلی کوئری به این صورته:
SELECT o.id1, p.title
FROM ordder o
LEFT JOIN product p
ON o.id1=p.id
WHERE (1=1 )
ORDER BY o.id1 DESC LIMIT 0 , 30
این کوئری بخاطر وجود LIMIT 0 , 30 اجرا نمی شه اما وقتی LIMIT 0 , 30 حذف می کنم کوئری بدون مشکل اجرا می شه
SELECT o.id1, p.title
FROM ordder o
LEFT JOIN product p
ON o.id1=p.id
WHERE (1=1 ) ORDER BY o.id1
مشکل چی می تونه باشه؟
با سلام
به نظرم بعد از عدد 30 یک کاراکتر ناخواسته به کوئریت اضافه شده اون رو پاک کن شاید اصلاح بشه
دلیل حرفم هم این هست که تو متن خطایی که گذاشتی بعد از 30 یک همچین  چیزی وجود داره
البته این رو هم بگم که تو تستی که من کردم کوئری شما خطا داد ولی LIMIT رو پاک کردم و مجددا نوشتم درست شد
نقل قول:
نوشته شده توسط
idocsidocs
مهندس این کوئری یه LEFT JOIN ساده هست و اگه ORDER BY o.id1 DESC LIMIT 0 , 30 حذف بشه بدون مشکل اجرا می شه
این ارور نمایش داده می شه:
#1064 - You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near '30' at line 1
دلیل این مشکل مشخص نیست؟
نقل قول: چرا LIMIT 0 , 30 باعث اخلال در کار LEFT JOIN می شه؟
نقل قول:
البته این رو هم بگم که تو تستی که من کردم کوئری شما خطا داد ولی LIMIT رو پاک کردم و مجددا نوشتم درست شد
با توجه به اینکه تست کردید بنظرتون مشکل چیه؟
نقل قول: چرا LIMIT 0 , 30 باعث اخلال در کار LEFT JOIN می شه؟
مشکلتون دقیقا همون چیزیه که حدث میزدم.
33 30 EF BB BF 0A
این آخر دستوری هست که اجرا میکنید
0A یعنی اینتر
33 30 هم یعنی 30
سه بایت اضافست
نقل قول: چرا LIMIT 0 , 30 باعث اخلال در کار LEFT JOIN می شه؟
نقل قول:
نوشته شده توسط
idocsidocs
با توجه به اینکه تست کردید بنظرتون مشکل چیه؟
همون طور که دوستمون FastCode گفتن آخر کوئریتون چند کاراکتر اضافه به صورت مخفی هست اون رو پاک کنید درست میشه
نقل قول: چرا LIMIT 0 , 30 باعث اخلال در کار LEFT JOIN می شه؟
نقل قول:
این آخر دستوری هست که اجرا میکنید
0A یعنی اینتر
33 30 هم یعنی 30
سه بایت اضافست
این کاراکترها به چه دلیل به کوئری اضافه می شن؟
نقل قول: چرا LIMIT 0 , 30 باعث اخلال در کار LEFT JOIN می شه؟
من کد اول شما و کد آقای شهرکی رو که گذاشته بودین با notepad++ چک کردم ، انتهای کدتون یک کاراکتر اضافه س، که کدش معادل EFBBBF هست و کد دومی که بدون limit گذاشتین این کاراکترو نداره و راحت اجرا میشه.
عکسشو میذارم ببینید ، اگه میشه از ; انتهای کوئری تا Limit رو پاک کنید ، دوباره تایپ کنین بعد تست کنین نتیجه رو بگین.
http://www.8pic.ir/images/45583371703733492522.jpg
اما اینکه چرا این کاراکتر اضافه شده جای سواله .
ممکنه مثلاَ به خاطر یونیکد صفحه باشه؟؟
یا اینکه ممکنه مربوط به ادیتور باشه؟؟
یونیکدتون چیه و از چه ادیتوری استفاده میکنید؟
نقل قول: چرا LIMIT 0 , 30 باعث اخلال در کار LEFT JOIN می شه؟
نقل قول:
عکسشو میذارم ببینید ، اگه میشه از ; انتهای کوئری تا Limit رو پاک کنید ، دوباره تایپ کنین بعد تست کنین نتیجه رو بگین.
ارور برطرف شد!
کپی پیست کردم و این مشکل برطرف شد اما مشکل اینجاست که این کدها رو قبلا استفاده می کردم و دلیل وجود این کاراکتر اضافه برام نامشخصه
نقل قول: چرا LIMIT 0 , 30 باعث اخلال در کار LEFT JOIN می شه؟
نقل قول:
نوشته شده توسط
idocsidocs
ارور برطرف شد!
کپی پیست کردم و این مشکل برطرف شد اما مشکل اینجاست که این کدها رو قبلا استفاده می کردم و دلیل وجود این کاراکتر اضافه برام نامشخصه
ممکنه قسمتی از BOM یا چیزی مشابهش باشه که توی کپی چند تا فایل یا هر کار دیگه ای جا به جا شده.