Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по синтаксису SQL [D6, FB1,5]


axx ©   (2004-05-28 08:01:00) 

Здравствуйте господа. Вот сидел сейчас писал процедурку и возник у меня следующий вопрос:
Возможно ли писать в SQL запросе чтото вроде этого
---------
select Max(DataTime) from w_prod where ID,Parent_id=(Select ID,ParentID from w_prodtab where DISK=:Какоето значение)
---------
Я конечно же уже сделал все по другому. Просто стало ОЧЕНЬ интересно можно ли написать [ПОЛЕ1 и Поле2]=[Значение1 и Значение2]

ЗЫ Если вопрос ламерский то сильно не пинайте :-))


DenK_vrtz   (2004-05-28 10:26:00) [1]

>slgeo ©   (28.05.04 10:16) [11]

гы! :)

WHERE (поле,поле1) и where поле,поле1 - две большие разницы,
отсюда и вопрос, а так все ок (roottim   (28.05.04 08:13) [1] )! :)


slgeo   (2004-05-28 10:16:00) [2]


>to DenK_vrtz ©   (28.05.04 10:08) [9]


Версия 8.1.7

SELECT *
FROM CATEG c
WHERE (c.ID,c.COD) =
(SELECT id,r.COD
FROM REFDOC r WHERE r.id=c.id)

Запрос правда не имеет глубокого смысла :) , но синтаксически он правильный


Соловьев   (2004-05-28 10:11:00) [3]


> axx   (28.05.04 08:01)

ХП не пробовал?


DenK_vrtz   (2004-05-28 10:08:00) [4]

>slgeo ©   (28.05.04 09:24) [8]

>а вот в Oracle такой вызов проходит на ура

а вот с этого места по подробнее, какая версия ORACLE и сам запрос можно в студию?


slgeo   (2004-05-28 09:24:00) [5]


> select Max(DataTime) from w_prod where ID,Parent_id=(Select
> ID,ParentID from w_prodtab where DISK=:Какоето значение)


Помнится Грабер еще писал, что такой синтаксис не входит в стандарт SQL и возможность его использования определяется на усмотрение разработчика СУБД. Касательно IB могу сказать, что он не поддерживает такой синтаксис, а вот в Oracle такой вызов проходит на ура.


Sandman25+1   (2004-05-28 09:03:00) [6]

Стандартный select.
select Max(A.DataTime) from w_prod A, w_prodtab B
where A.ID = B.id
 and A.ParentId=B.parentId
 and B.DISK=:Какоето значение


axx   (2004-05-28 08:46:00) [7]

То sniknik
 Вернее не FK а PK


axx   (2004-05-28 08:45:00) [8]

То sniknik
  я собственно так и сделал. А по поводу уникальности у меня FK на 2 поля ID,Parent_id в таблице w_prod.

То BoxTer
  "ID,Parent_id in" и снова на "," матерится. :-)


sniknik   (2004-05-28 08:27:00) [9]

а так не пройдет?
select Max(a.DataTime) from w_prod a INNER JOIN w_prodtab b ON a.ID=b.ID AND a.Parent_id=b.Parent_id where b.DISK=:Какоето значение

у тебя что ID не уникально? зачем двойная проверка, лучше по моему сделать его уникальным.


BoxTer   (2004-05-28 08:27:00) [10]

Можно, тока нада маненько подправить твой код:
select Max(DataTime) from w_prod where ID,Parent_id in(Select ID,ParentID from w_prodtab where DISK=:Какоето значение)


axx   (2004-05-28 08:15:00) [11]

(ID,Parent_id) - ругается на ","


roottim   (2004-05-28 08:13:00) [12]

select Max(DataTime) from w_prod where (ID,Parent_id)=(Select ID,ParentID from w_prodtab where DISK=:Какоето значение)


Наверх

Титульная страница Поиск, карта сайта Написать письмо