|
MySQL.RU - Webboard
Вернуться
Помогите разобратся с запросом. Ошибка логики (Ворон) 20/10/2005 - 23:55:59
Re: Помогите разобратся с запросом. Ошибка логики (Dinky) 21/10/2005 - 00:12:40
Re: Не работает. Помогите найти где ошибся. (Ворон) 21/10/2005 - 10:33:59
Re: Маленькое уточнение. (Ворон) 21/10/2005 - 10:36:06
Re: Не работает. Помогите найти где ошибся. (Dinky) 21/10/2005 - 20:19:08
Re: Не работает. Помогите найти где ошибся. (Ворон) 21/10/2005 - 22:25:05
Re: Не работает. Помогите найти где ошибся. (Ворон) 23/10/2005 - 15:16:51
> Original message text:
> From: Ворон - 20/10/2005 - 23:55:59
> Subject:Помогите разобратся с запросом. Ошибка логики
> -----------------
> Доброго времени суток.
> Есть три таблицы:
> -------
> 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 ((control_id=1)OR(control_id=3));"
>
> Но я явно что то недомудрил. Вместо 2х строк я получаю 4.
> Для каждого Tabl_1_id я получаю все controlы соответствующие каждому из control_id.
>
> Как мне исправится ?
> Как сделать такой запрос коректно ?
>
> С уважением. Ворон.
>
From: Dinky - 21/10/2005 - 00:12:40
Subject:Помогите разобратся с запросом. Ошибка логики
-----------------
ну надо бы связать таблицы, чтоб не получать все варианты ;)
если я правильно понял смысл полей:
SELECT t1.Tabl_1_id, control
FROM Tabl_1 t1 INNER JOIN Tabl_2 t2 ON t1.Tabl_2_id=t2.Tabl_2_id
INNER JOIN Tabl3 t3 ON t3.Tabl_3_id=t2.Tabl_3_id
WHERE ((t1.Tabl_1_id=55)OR(t1.Tabl_1_id=56)) and ((control_id=1)OR(control_id=3))
--
Dmitry
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
24614
|
|