|
|
|
| помогите, пожалуйста, правильно составить запрос.
вот тот, который я составил:
SELECT secondary.SecondaryID,secondary.RoomCount, district.DistrictName, street.StreetVisibleName, secondary.FloorValue,
secondary.SquareValue, secondary.Sanitary, secondary.Phone, secondary.Price
FROM secondary
LEFT JOIN street ON secondary.StreetID = street.StreetID
LEFT JOIN subdistrict ON secondary.SubdistrictID = subdistrict.SubdistrictID
LEFT JOIN district ON secondary.DistrictID = district.DistrictID
WHERE
TypeObject = 1
AND secondary.districtID = 1
OR secondary.districtID = 2
OR secondary.districtID = 3
OR secondary.districtID = 4
OR secondary.districtID = 5
OR secondary.districtID = 6
OR secondary.subdistrictID = 1
OR secondary.subdistrictID = 2
OR secondary.subdistrictID = 3
OR secondary.subdistrictID = 4
OR secondary.subdistrictID = 5
OR secondary.subdistrictID = 6
OR secondary.streetID = 1
OR secondary.streetID = 2
OR secondary.streetID = 3
OR secondary.streetID = 4
OR secondary.streetID = 5
OR secondary.streetID = 6
OR secondary.planTypeID = 1
OR secondary.planTypeID = 2
OR secondary.planTypeID = 3
OR secondary.planTypeID = 4
|
из-за множественного OR в выводе оказываются строки, которые не соответствуют параметрам запроса (например, те, у которых TypeObject = 2 и т.д.).
логически понимаю, что нужно либо как-то переписать запрос. пробовал добавлять скобки, пробовал писать в виде secondary.streetID = (1 OR 2 OR 3), результат всё равно меня не удовлетворил, прощу помощи | |
|
|
|
|
|
|
|
для: GooD
(06.04.2008 в 17:36)
| | Попробуйте следующий запрос
SELECT secondary.SecondaryID,secondary.RoomCount, district.DistrictName, street.StreetVisibleName, secondary.FloorValue,
secondary.SquareValue, secondary.Sanitary, secondary.Phone, secondary.Price
FROM secondary
LEFT JOIN street ON secondary.StreetID = street.StreetID
LEFT JOIN subdistrict ON secondary.SubdistrictID = subdistrict.SubdistrictID
LEFT JOIN district ON secondary.DistrictID = district.DistrictID
WHERE
TypeObject = 1
AND secondary.districtID IN (1, 2, 3, 4, 5, 6)
AND secondary.subdistrictID IN (1, 2, 3, 4, 5, 6)
AND secondary.streetID IN (1, 2, 3, 4, 5, 6)
AND secondary.planTypeID IN (1, 2, 3, 4)
|
| |
|
|
|
|
|
|
|
для: cheops
(06.04.2008 в 18:02)
| | ну или
SELECT secondary.SecondaryID,secondary.RoomCount, district.DistrictName, street.StreetVisibleName, secondary.FloorValue,
secondary.SquareValue, secondary.Sanitary, secondary.Phone, secondary.Price
FROM secondary
LEFT JOIN street ON secondary.StreetID = street.StreetID
LEFT JOIN subdistrict ON secondary.SubdistrictID = subdistrict.SubdistrictID
LEFT JOIN district ON secondary.DistrictID = district.DistrictID
WHERE
TypeObject = 1 AND
(
secondary.districtID IN (1, 2, 3, 4, 5, 6)
OR secondary.subdistrictID IN (1, 2, 3, 4, 5, 6)
OR secondary.streetID IN (1, 2, 3, 4, 5, 6)
OR secondary.planTypeID IN (1, 2, 3, 4)
)
|
для случая, когда нужно, чтоб хотя бы 1 параметр попал в заданный список | |
|
|
|
|