PDA

View Full Version : درخواست یک کوئری ساده اما نکته دار !



b.i.r.i.y.a
پنج شنبه 01 آبان 1393, 17:22 عصر
سلام. من دوتا جدول دارم بصورت زیر :

124876

میخوام یه خروجی بگیرم بصورت زیر، اما بدون رکوردهایی که روشون خط کشیدم :

124877

چون تو تصاویر همه چیز واضحه دیگه توضیح اضافه ندادم. اما اگر لازم بود بفرمایید تا خدمتتون عرض کنم.
منتظر پاسخ شما هستم :لبخندساده:

با سپاس از همگی :بوس:

fahimi
پنج شنبه 01 آبان 1393, 21:49 عصر
دلیل خط کشیدن!! به چه دلیل 6 رکورد را مستثنی کردید. در آنصورت شاید بتوان با شرط Where ، Having و Not In کاری کرد.

حمیدرضاصادقیان
پنج شنبه 01 آبان 1393, 22:07 عصر
سلام.
بعد از Join یک where Clause اضافه کنید وبراساس ترکیب شرطهای مورد نظر رکوردها رو حذف کنید.

b.i.r.i.y.a
پنج شنبه 08 آبان 1393, 10:38 صبح
دلیل خط کشیدن!! به چه دلیل 6 رکورد را مستثنی کردید. در آنصورت شاید بتوان با شرط Where ، Having و Not In کاری کرد.
دلیلش اینه که من میخوام از هر post (که ستون اول مربوط به id اونا میشه) فقط اولی در خروجی نمایش داده بشه.
قضیه اینجوریه که یه جدول برای پستهای سایت وجود داره و یه جدول هم برای عکسهای پستها.
حالا من یه کوئری میخوام که در یک جدول ، همه ی پستهارو بیاره به همراه رکورد اولین عکسی که برای اون پست تو جدول عکسها وجود داره.
فکر کنم الان دیگه بتونید کوئری مد نظر منو برام بنویسید. درسته؟


سلام.
بعد از Join یک where Clause اضافه کنید وبراساس ترکیب شرطهای مورد نظر رکوردها رو حذف کنید.
مرسی حمید جان.
ولی خب مسأله اینجاست که من بلد نیستم بنویسمش :)
اگه امکانش هست خودتون برام بنویسید تا متوجه بشم منظورتون چیه.

با سپاس از دو دوست گرامی.

aslan
پنج شنبه 08 آبان 1393, 12:11 عصر
سلام
سعی کنید خودتون بنویسید . یک روش :
جوین جداول ( INNER JOIN)
دادن شماره سطر به هر رکورد بر اساس فیلد شناسه ( Row_Number() Over ) لینک زیر را ببینید :

http://msdn.microsoft.com/en-us/library/ms186734.aspx
.....
گرفتن سلکت بعدی از حاصل کوئری فوق با شرط ( مثلا Where Row=1) یعنی فقط رکوردهای اول هر Id
...
موفق باشید

b.i.r.i.y.a
پنج شنبه 15 آبان 1393, 11:17 صبح
سلام
سعی کنید خودتون بنویسید . یک روش :
جوین جداول ( INNER JOIN)
دادن شماره سطر به هر رکورد بر اساس فیلد شناسه ( Row_Number() Over ) لینک زیر را ببینید :

http://msdn.microsoft.com/en-us/library/ms186734.aspx
.....
گرفتن سلکت بعدی از حاصل کوئری فوق با شرط ( مثلا Where Row=1) یعنی فقط رکوردهای اول هر Id
...
موفق باشید
شرمنده، ولی من select بعدی رو نمیدونم چجوری باید بگیرم!!!
اینو نوشتم ولی خب ارور میده :


SELECT * FROM
(SELECT *, ROW_NUMBER() OVER(PARTITION BY post_table.id ORDER BY post_table.id) AS Row
FROM (post_table inner join postImages_table on post_table.id=postImages_table.postId)) As A
WHERE A.Row=1



error :
The column 'id' was specified multiple times for 'A'.

مشکلش چیه؟!

b.i.r.i.y.a
جمعه 16 آبان 1393, 17:08 عصر
دوستان لطفا راهنمایی کنید. کارم گیره. مرسی

aslan
جمعه 16 آبان 1393, 17:37 عصر
select * from (
select post_table.*
,P.id as poid,P.postid,P.imagename, Post_table.id as postimgeid
, ROW_NUMBER() OVER(PARTITION BY post_table.id ORDER BY post_table.id) AS Row
from post_table left outer join PostImage_table P on post_table.id=P.postid
) xx where row=1

b.i.r.i.y.a
جمعه 16 آبان 1393, 18:07 عصر
select * from (
select post_table.*
,P.id as poid,P.postid,P.imagename, Post_table.id as postimgeid
, ROW_NUMBER() OVER(PARTITION BY post_table.id ORDER BY post_table.id) AS Row
from post_table left outer join PostImage_table P on post_table.id=P.postid
) xx where row=1


آقا اسلان دمت گرم عزیز. جواب داد :لبخند:
با اینکه متوجه نشدم اون دوتا xx کارشون چیه ، ولی بهرحال خیلی ممنونم. :قلب:

En_MK
جمعه 16 آبان 1393, 18:49 عصر
اونا alis هستند