Задавайте вопросы, мы ответим
Вы не зашли.
Прошу помощи.
Ситуация такая...
Необходимо из выборки:
Поле1 Поле2
знач1_1 знач2_1
знач1_2 знач2_2
знач1_3 знач2_3
и т.д.
исключить записи, где значение из Поля1 (знач1_x) встречается хотя бы раз в Поле2 (знач2_x).
Например, полученная выборка:
Поле1 Поле2
5 0
243 5
300 21
должна выглядеть так:
Поле1 Поле2
243 5
300 21
пробовал having'ом ( having Поле2 <> Поле1 ) - не получилось
Неактивен
Отредактированно deadka (02.05.2011 13:57:22)
Неактивен
Не совсем... то, что я написал выше это уже есть выборка, причем используется достаточно большой запрос, необходимо к запросу "что-то" дописать чтобы учесть это условие. а вот что?
Неактивен
Может приведете сами таблицы и данные и текст Вашей выборки?
К слову, можно создать view, и к нему уже применять тот запрос, который я указал постом выше, эффект будет тот же самый.
Неактивен
В общем опишу задачу подробнее.
Есть таблица банков `bank` и таблица РКО (Расчетно-кассовое обслуживание) `rko`.
В таблице банков содержится информация о банках включая город, где этот банк находится (city_id), и его значимость(головной офис или филиал) (parent).parent = 0 - если банк является гол. офисом. Если банка является филиалом, то это поле содержит id банка чей филиал.
в таблице РКО находится информация о РКО каждого банка. Т.е. по-идее, связь один-к-одному. Но есть один момент, для банков-гол.оф. (parent=0) есть еще одна запись в таблице РКО для домашнего региона. Т.е. филиалы содержат только одну запись РКО, а гол.оф. - 2 (для своего региона (city_id) и на всю Россию).
Вот здесь начинается экшн. Надо выбрать из РКО записи для банков из текущего города($CITY), которые являются филиалами, а если записи нет для банка-филиала, то ищем РКО банка-гол.оф. для всей России (если гол.оф. находится не в текущем городе($CITY)), либо РКО банка-гол.оф. домашнего региона (если city_id банка-гол.оф. == $CITY)
Таблицы:
bank (bank_id, name, parent и др.неважная инф.)
rko (rko_id, bank_id, home и др.неважная инф.)
home - указывает для какого региона. (1 - для домашнего, там где находится банк, 0 - для остальной части России)
Сам запрос:
"select `R`.*,`B`.`name`,`B`.`parent` from `rko` as `R`,`bank` as `B` where
`R`.`bank_id` = `B`.`bank_id` and
(
(
`B`.`city_id` = '$CITY' and `B`.`parent` != '0'
)
or
(
`B`.`parent` = '0' and
(
(`B`.`city_id` = '$CITY' and `R`.`home` = '1') or (`R`.`home` = '0')
)
)
)
Уточню проблему, весь запрос работает на "ура", только мне НЕ надо вытаскивать записи об РКО банков-гол.офисов, если есть хотя бы одна запись РКО его филиалов.
Отредактированно int64 (02.05.2011 14:48:01)
Неактивен
Собственно получается такая выборка:
rko_id bank_id home name parent city_id
1 5 0 Альфа-Банк 0 3
2 477 0 Восточный Экспресс Банк 0 1
3 20 0 Юниаструм Банк 0 1
4 243 1 Альфа-Банк 5 3
здесь не должно быть 1 строки, т.к. в parent 4 строки = bank_id 1 строки
Неактивен
А почему не добавить WHERE bank_id NOT IN (SELECT parent FROM ... WHERE city_id = $CITY and parent != 0)
Неактивен