PDA

View Full Version : چه Query بزنم که جواب مورد نیاز زا بگیرم؟



Maryam_y_m
چهارشنبه 11 مرداد 1385, 16:13 عصر
فرض کنید یک View داریم که رکوردهایی به صورت زیر برای ما برمیگرداند:


ID PropertyID PropertyValue
------------ ------------ ---------
الف 300 1001
ب 305 1001
پ 308 1001
م 300 1002
ن 305 1002
م 300 1003
ن 305 1003

میخواهیم ID هایی را به دست آوریم که با PropertyID =300 مقدارشان "م" باشد و با PropertyID =305 مقدارشان "ن" باشد (در View فرضی فوق ، جواب 1002 و 1003 است)
چگونه میتوان این کار را کرد؟؟؟

reza_rad
چهارشنبه 11 مرداد 1385, 16:31 عصر
از دو تا سلکت استفاده کنید با union

تو یکی شرط اول
و توی دومی شرط دوم رو بگذارید.


این یک راهه.البته راههای دیگه هم احتمالا وجود داره...

Maryam_y_m
چهارشنبه 11 مرداد 1385, 16:55 عصر
نه با union جواب دلخواه رو نمیگیرم چون هر کدوم از شرطها که برقرار باشه توی گزارش میاره نه هر دو رو

hmm
چهارشنبه 11 مرداد 1385, 18:21 عصر
select * from table_name
where
( ID =300 and PropertyID ='م') or
( ID =305 and PropertyID ='ن')

Maryam_y_m
شنبه 14 مرداد 1385, 08:41 صبح
select * from table_name
where
( ID =300 and PropertyID ='م') or
( ID =305 and PropertyID ='ن')

این هم جواب نمیدهد چون در یک رکورد که نمیشود مقدار یک فیلد مساوی دو مقدار مختلف باشد
یعنی هم PropertyID =300 و هم PropertyID =305

mzjahromi
شنبه 14 مرداد 1385, 09:10 صبح
این هم جواب نمیدهد چون در یک رکورد که نمیشود مقدار یک فیلد مساوی دو مقدار مختلف باشد
یعنی هم PropertyID =300 و هم PropertyID =305
نه دوست عزیز جواب فوق برای سوالی که شما مطرح کردید درسته مگر اینکه سوالتون چیز دیگه باشد. اگر دقت کنید گفته یا 500 باشه یا 300 واین کاملا منطقیه

من فکر میکنم منظورتون اینه


Select * From TableName where
( PropertyID =300 and PropertyValue ='م')
And ID in(
Select * From TableName where
( PropertyID =305 and PropertyValue ='ن')
)

Maryam_y_m
شنبه 14 مرداد 1385, 09:59 صبح
بله همینه. مرسی