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

Raven B. Известность не заставит себя ждатьRaven B. Известность не заставит себя ждать
Помогите с SQL запросом. Вопрос по получению уникальной записи.

Доброго времени суток.
Есть рабочий запрос:

Цитата:
sql_q = "SELECT control_t.control_id, ph_f_control_comp_t.control_comp_id, control_t.control"
sql_q = sql_q & " FROM ph_f_control_comp_t, control_comp_t, control_t"
sql_q = sql_q & " WHERE ((Str(control_comp_t.control_id) = Str(control_t.control_id))"
sql_q = sql_q & " AND (str(ph_f_control_comp_t.control_comp_id)=str(control_comp_t.control_c omp_id))"
sql_q = sql_q & " AND (ph_f_control_comp_t.norm_id = '" & veg & "')) GROUP BY control_t.control_id;"
Но надо что бы в результате я получил только записи с уникальным полем control_t.control_id (остальные поля могут дублироватся, так что DISTINC не подходит).
Насколько я понял такой результат я могу получит ь используя GROUP BY control_t.control_id.
Но такой вот запрос не работает:

Цитата:
sql_q = "SELECT control_t.control_id, ph_f_control_comp_t.control_comp_id, control_t.control"
sql_q = sql_q & " FROM ph_f_control_comp_t, control_comp_t, control_t"
sql_q = sql_q & " WHERE ((Str(control_comp_t.control_id) = Str(control_t.control_id))"
sql_q = sql_q & " AND (str(ph_f_control_comp_t.control_comp_id)=str(control_comp_t.control_c omp_id))"
sql_q = sql_q & " AND (ph_f_control_comp_t.norm_id = '" & veg & "')) GROUP BY control_t.control_id;"
Первый и второй запросы во время выполнения выглядят как :
1:
Цитата:
SELECT control_t.control_id, ph_f_control_comp_t.control_comp_id, control_t.control FROM ph_f_control_comp_t, control_comp_t, control_t WHERE ((Str(control_comp_t.control_id) = Str(control_t.control_id)) AND (str(ph_f_control_comp_t.control_comp_id)=str(control_comp_t.control_c omp_id)) AND (ph_f_control_comp_t.norm_id = '23'));
2:
Цитата:
SELECT control_t.control_id, ph_f_control_comp_t.control_comp_id, control_t.control FROM ph_f_control_comp_t, control_comp_t, control_t WHERE ((Str(control_comp_t.control_id) = Str(control_t.control_id)) AND (str(ph_f_control_comp_t.control_comp_id)=str(control_comp_t.control_c omp_id)) AND (ph_f_control_comp_t.norm_id = '23')) GROUP BY control_t.control_id;
Если необходима структура таблиц, то вот она :

Есть три таблицы:
Цитата:
-------
ph_f_control_comp_t
-------
norm_id
control_comp_id
ph_f_control_comp_id
-------
control_comp_t
-------
control_id
std_id
control_comp_id
-------
control_t
-------
control
control_id
Поможете разобратся в чем дело ?
Raven B. вне форума