Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сложный запрос 
:(
    Опции темы
Alone
Дата 8.11.2005, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: нет
Всего: 6



Доброго дня.
Помогите построить запрос:
есть

Код

ref_tbl(
  id bigint,
  param varchar
)

tbl(
  ref_param_id bigint,
  value varchar,
  out_id
)




нужно выбрать из обоих таблиц (param, value)
по множественному условию:
param = x1 & value = y1
param = x2 & value = y2
...

Это сообщение отредактировал(а) Alone - 14.11.2005, 12:26


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
Darhazer
Дата 8.11.2005, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

Репутация: нет
Всего: 29



Код

SELECT * FROM ref_tbl, ref_param_id
WHERE
(ref_tbl.param = x1 AND ref_param_id.value=y1)
OR
(ref_tbl.param = x2 AND ref_param_id.value=y2)
...




--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
Alone
Дата 9.11.2005, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: нет
Всего: 6



да нет... если бы так все было просто - я не писал бы сюда.
надо чтоб условие проверялось на пары: ref_tbl.param = x1 AND ref_param_id.value=y1
и таких условий может быть много. и проверка не по ОР а по ЭНД.
в этом то и сложность... Хотел уйти от вложенных подзапросов, да видимо не получится...


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
Akina
Дата 9.11.2005, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Alone
а тебе чего написАли?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Darhazer
Дата 9.11.2005, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

Репутация: нет
Всего: 29



У ref_tbl.param можеть быт только одно значение, оно не может быт или х1 или х2, не может быт х1 и х2
Поэтому проверка по OR

Пожалуйства, поясните цель, дайте пример, обясните значение id и ref_param_id - какая связь между таблици и т.д.

Вообще, напишите примерное содержание двух таблици и что должно получиться


--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
Alone
Дата 9.11.2005, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: нет
Всего: 6



да нет... если бы так все было просто - я не писал бы сюда.
надо чтоб условие проверялось на пары: ref_tbl.param = x1 AND ref_param_id.value=y1
и таких условий может быть много. и проверка не по ОР а по ЭНД.
в этом то и сложность... Хотел уйти от вложенных подзапросов, да видимо не получится...


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
bas
Дата 9.11.2005, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



Цитата(Alone @ 9.11.2005, 14:35)
ref_tbl.param = x1 AND ref_param_id.value=y1


Код

ref_tbl.param in (тут список)  AND ref_param_id.value in (тут список)

PM MAIL   Вверх
Darhazer
Дата 9.11.2005, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

Репутация: нет
Всего: 29



Цитата(bas @ 9.11.2005, 18:34)
Цитата(Alone @ 9.11.2005, 14:35)
ref_tbl.param = x1 AND ref_param_id.value=y1


Код

ref_tbl.param in (тут список)  AND ref_param_id.value in (тут список)

Тогда выберет и если
param = x2 & value = y1

Alone, зачем пишете два раза одно и тоже. Дайте примерную таблицу и примерний результат... и мы напишем вам запрос ;)


--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
Akina
Дата 9.11.2005, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Почему бы пары параметров не запихнуть во временную таблицу и не сделать после выборку с inner join по нужным полям? ей-бо, быстрее будет... особенно если этих пар много...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Alone
Дата 14.11.2005, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: нет
Всего: 6



повторное сообщение - глюк сети/форума

Уточняю ситуацию:
таблица ref_tbl (вернее ref_tbl_xxxx) может содержать примерно такие записи:
1 number
2 name
3 link

таблица tbl (вернее tbl_xxxx) может содержать примерно такие записи:

1 12345 15
2 pupkin 15
3 yes 15


Из этого содержимого можно вывести следующее:
number=12345
name=pupkin
link=yes
out_id=15

Так вот, мне надо например, выбрать tbl.out_id, где (number=12345 и name=pupkin)
Так, надеюсь понятней?


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
boevik
Дата 14.11.2005, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 6
Всего: 35



Не совсем понятно.
На первый взгляд выглядит как простой INNER JOIN между ref_tbl_xxxx и tbl_xxxx.
Какую роль играет out_id во всей этой сказке?

Код

SELECT param + ' = ' + value
FROM ref_tbl INNER JOIN tbl ON id = ref_param_id 


Этот sql вернет то что просил.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.4728 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.