Показать сообщение отдельно
Старый 21.10.2005, 14:40     # 1
Raven B.
Member
 
Аватар для Raven B.
 
Регистрация: 12.07.2004
Адрес: Очень странное место.
Сообщения: 328

Raven B. Известность не заставит себя ждатьRaven B. Известность не заставит себя ждать
Unhappy Пмогите с SQl запросом.

Доброго времени суток.
Есть три таблицы:
-------
Tabl_1
-------
norm_id
Tabl_2_id
Tabl_1_id
-------
Tabl_2
-------
Tabl_3_id
std_id
Tabl_2_id
-------
Tabl_3
-------
control
Tabl_3_id

Есть масив norm_id.

1. Я получаю из Tabl_1 все Tabl_2_id и Tabl_1_id где norm_id равно значениям масива. Tabl_1_id понядобятся в конце. Тут все ок.

2. Я получаю из Tabl_2 все Tabl_3_id где Tabl_2_id равны тем которые получены из прошлой таблицы.

3. Я должен составить запрос, который выдаст в первом столбце все Tabl_1_id выбраные на шаге 1, а во втором все control из Tabl_3, где Tabl_3 равно Tabl_3_id полученые на шаге 2.
Количество значений колонок будут соответствовать 1:1.


Для этого попробовал написать такой запрос:
sql_q = "SELECT Tabl_1_id,control FROM Tabl_1,Tabl_3 WHERE ((Tabl_1_id=55)OR(Tabl_1_id=56)) and ((Tabl_3_id=1)OR(Tabl_3_id=3));"

Но я явно что то недомудрил. Вместо 2х строк я получаю 4.
Для каждого Tabl_1_id я получаю все controlы соответствующие каждому из control_id.

Еще пробывал такой запрос:

SELECT t1.Tabl_1_id,t3.control FROM Tabl_1 t1 INNER JOIN Tabl_2 t2 ON t1.Tabl_2_id=t2.Tabl_2_id INNER JOIN Tabl_3 t3 ON t3.Tabl_3_id=t2.Tabl_3_id WHERE ((t3.Tabl_3_id=3)OR(t3.Tabl_3_id=1)) and ((t1.Tabl_1_id=1)OR(t1.Tabl_1_id=2));

Вообще ничего не возвращает...

Как мне исправится ?
Как сделать такой запрос коректно ?

С уважением. Ворон.
Raven B. вне форума