|
|
|
Помогите с процедурой
|
|||
|---|---|---|---|
|
#18+
Пишу процедуру для MS SQL сервер.... Проблема в следующем: не понимаю почему не дает использовать if в where. Смысл в том, чтобы если значение не определено, то входящей переменной назначается значение "-1" и при проверке оно не учитывалось... CREATE PROCEDURE search_area_price @areamin real, @areamax real, @pricemin int, @pricemax int, @okrug varchar, @metro varchar, @street varchar, @type varchar, @m_m int, @phone varchar, @internet binary, @data smalldatetime AS SELECT office.id AS id, office.building_id AS building_id, office.sqmeters AS area, office.price AS price, office.oper_expenses AS oper, office.parking_num AS parking, voc_street.name AS street, building.num AS number, voc_metro.name AS metro, voc_okrug.name AS okrug, voc_building_type.name AS b_type, voc_phone.name AS phone, owner.name AS owner, owner_contact.name AS contact, owner_contact.phone AS phone, office.contract_num AS contract, broker.name AS broker FROM broker INNER JOIN owner INNER JOIN voc_phone INNER JOIN link_office_phone INNER JOIN voc_metro INNER JOIN voc_okrug INNER JOIN voc_building_type INNER JOIN voc_street INNER JOIN building ON voc_street.id = building.street_id INNER JOIN office ON building.id = office.building_id ON voc_building_type.id = building.building_type_id ON voc_okrug.id = building.okrug_id ON voc_metro.id = building.metro_id ON link_office_phone.office_id=office.id ON voc_phone.id=link_office_phone.phone_id ON owner.id = office.owner_id ON broker.id = office.broker_id INNER JOIN (SELECT office_id, MIN(owner_contact_id) AS contact_min_id FROM link_office_owner_contact GROUP BY office_id) link ON office.id = link.office_id INNER JOIN owner_contact ON link.contact_min_id = owner_contact.id WHERE (office.sqmeters BETWEEN @areamin AND @areamax) AND (office.price BETWEEN @pricemin AND @pricemax) AND (IF @metro <> -1 ( voc_metro.name = @metro)) AND (voc_okrug.name LIKE @okrug) AND NOT (office.date_active = NULL) GO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2004, 17:13 |
|
||
|
Помогите с процедурой
|
|||
|---|---|---|---|
|
#18+
Этот вопрос надо задавать в форуме Microsoft SQL Server . Вместо IF надо использовать CASE, подробности в Books Online По выражению Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2004, 17:51 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=32519430&tid=1546486]: |
0ms |
get settings: |
12ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
173ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 508ms |

| 0 / 0 |
