PDA

View Full Version : حرفه ای: کمک برای نوشتن یک query



$ M 3 H R D A D $
یک شنبه 14 آبان 1391, 20:55 عصر
سلام
من یک جدول کامنت دارم
و دوتا حدول دیگه : اخبار - خطبه

ستون ها جدول کامنت :



comments.id , comments.text,comments.parentid,comments.type



اگه تو خبر ها نظر ارسال بشه تو قسمت type 1 قرار میگیره و اگه تو قسمت خطبه ها نظر ثبت بشه مقدار 2 قرار می گیره

حالا میخوام که ستون ها جدول نطرات و به همراه عنوان (خبر ) یا عنوان (خطبه ) نشون بده
نمیشه جوین کرد باید با if و else نوشت لطفا راهنمایی کنید

reza10wert
یک شنبه 14 آبان 1391, 21:35 عصر
سلام دوست عزیز

درست متوجه نشدم چی میخواهید !

اگه میشه کامل تر و واضح تر توضیح بدید تا اگر بدونم کمکتون کنم

$ M 3 H R D A D $
یک شنبه 14 آبان 1391, 21:41 عصر
این راه خوبیه > یا به مشکل بر میخوره ؟


SELECT comments.name, (

SELECT title
FROM news
WHERE news.id = comments.news_id
AND comments.type =1
) AS title_news, (

SELECT title
FROM alert
WHERE alert.id = comments.news_id
AND comments.type =2
) AS title_alert
FROM comments
LIMIT 0 , 30

Unique
یک شنبه 14 آبان 1391, 23:43 عصر
منم بعضی وقت ها که حوصله ندارم اینجوری از طریق یک فیلد تشخیصی عمل میکنم (که البته جالب نیست) اما نمیام sub select بنویسیم و از user defined function ها برای گرفتن اون فیلد مورد نظرم بر اساس نوع تشخیصی استفاده میکنم. اما معمولا comment های این دو زیاد ربطی به هم ندارند که لازم بشه همشون لیست بشن ! در ضمن query شما نباید اجرا بشه چون جدول های news و alerts که comments.type ندارند ! تنها راهی که به نظرم شاید توی Inline query جواب بده اینه که از تابع IF استفاده کنی که البته من استفاده نکردم اما چون sub select هم یک expr (?) هست باید کار کنه ! بهتره یک function خودت توی Mysql بنویسی و این title را از اون بگیری !

plague
دوشنبه 15 آبان 1391, 00:57 صبح
اینو تست کن ببین خودم فعلا امکان تست کردن ندارم
اگه اررور سنتکس داد عدد ها رو بزار داخل کوتیشن و دوباره تست کن


SELECT c.* , t.title FROM commments c
JOIN
CASE c.type
WHEN 1 THEN news
WHEN 2 THEN alert
END
AS t ON c.news_id = t.id