![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вернуть "First" с условием [Access]
ivanoff © (2008-10-01 15:26:00)
SELECT
First(T1.f1),
First(T3.DataFld) <------ ...
FROM T1
LEFT JOIN T2 ON T1.id2 = T2.id
LEFT JOIN T3 ON T1.id3 = T3.id
GROUP BY T1.id1
.... вот там нужно получить не первую запись а первую при условииT2.MyField = T3.MyField если таковых нету чтоб вернуло NULL
Сергей М. (2008-10-01 17:35:00) [1]
> как мне там указать второе условие
Что значит "как" ? Средствами мастера конструирования запросов в составе MS Access !
ivanoff (2008-10-01 17:31:00) [2]и как мне там указать второе условие
Сергей М. (2008-10-01 17:23:00) [3]
> ivanoff (01.10.08 17:20) [18]
Воспользуйся виз.конструктором запросов самого Access'а - он сам построит лексически и синтаксически правильный текст интересующего тебя SQL-запроса.
ivanoff (2008-10-01 17:20:00) [4]я не говорил "в принципе" не принимает
в моем случае не принимает
...
FROM ((((T1
LEFT JOIN ...)
LEFT JOIN T2 ON T1.id2 = T2.id)
LEFT JOIN ...)
RIGHT JOIN T3 ON T1.id3 = T3.id)
-> Join expression not supported
Сергей М. (2008-10-01 17:08:00) [5]
> Access не принимает RIGHT JOIN
С каких это пор ?
http://office.microsoft.com/en-us/access/HA012314891033.aspx?pid=CH100728991033
ivanoff (2008-10-01 17:03:00) [6]:)
> ON (T1.id3 = T3.id) AND (T2.MyField = T3.MyField)
я тож так думал но не принимает: Join expression not supported
ivanoff (2008-10-01 17:00:00) [7]неа...
у меня несколько связок LEFT JOIN и Access не принимает RIGHT JOIN
мне бы в ON условии присобачить(T1.id3 = T3.id) AND (T2.MyField = T3.MyField)
Johnmen (2008-10-01 16:53:00) [8]Тоже потренирую телепатию :)
Вот это что-ли:
SELECT
First(T1.f1),
First(T3.DataFld) <------ ...
FROM T1
LEFT JOIN T2 ON T1.id2 = T2.id
LEFT JOIN T3 ON (T1.id3 = T3.id ) AND (T2.MyField = T3.MyField)
GROUP BY T1.id1
Sergey13 (2008-10-01 16:50:00) [9]SELECT
T1.f1,
Count(T3.*),min(T3.DataFld)
FROM T1
LEFT JOIN T2 ON T1.id2 = T2.id
LEFT JOIN T3 ON T1.id3 = T3.id
GROUP BY T1.id1
Поросенок Винни-Пух (2008-10-01 16:39:00) [10]мои знакомые блондинки и то понятнее изъясняются
Сергей М. (2008-10-01 16:37:00) [11]А-а-а !.. похоже, я начал понимать, куда гнет автор)
Ему, видимо, RIGHT JOIN нужен, тогда при наличии хотя бы одной записи в T1 и отсутствии свя\занных записей в присоединенных таким образом T2 и T3 получится почти то что ему нужно - в НД будет одна запись с NULL во 2-м поле
ivanoff (2008-10-01 16:30:00) [12]так мой вопрос именно в том как построить условие так, чтоб получить ВСЕ записи из T1 а из T3 получить первое соответствующее условию.
если Т3.MyField не соответствует условию, запись из Т1 должна попасть в выборку а на место Т3 должно быть NULL -> что значит в Т3 нету записей где(T1.id3 = T3.id) AND (T2.MyField = T3.MyField)
Сергей М. (2008-10-01 16:28:00) [13]
> ivanoff (01.10.08 16:09) [7]
Не прояснилось, зачем тебе этот NULL ..
> если там есть что-то
Это условие соответствует непустому НД
> ели нет
Это условие соответствует пустомуНД.
В чем проблема, зачем тут еще нул какой-то понадобился ?
Поросенок Винни-Пух (2008-10-01 16:16:00) [14]если там есть что-то удовлетворяющее условию, ты ее получишь.
если нет, то ты сам хотел чтобы
вот там нужно получить не первую запись а первую при условии T2.MyField = T3.MyField
ivanoff (2008-10-01 16:09:00) [15]эту самую выборку потом нужно обработать если там есть что-то - использую это ели нет (=NULL) знаю что надобно добавить запись в T3 с нуйным условием
...хочу знать стандартными средствами реализуемо или нет
Сергей М. (2008-10-01 16:02:00) [16]
> ivanoff (01.10.08 15:51) [4]
И зачем тебе этот нул понадобился ?
Без него жизнь что ли не мила или что ?
Поясни ..
Поросенок Винни-Пух (2008-10-01 16:01:00) [17]если таковых не будет, выборка будет пустая
ivanoff (2008-10-01 15:51:00) [18]
> если таковых нету чтоб вернуло NULL
???
Поросенок Винни-Пух (2008-10-01 15:47:00) [19]select ... from table 1, table 2
where table1.x = table2.y
ivanoff (2008-10-01 15:46:00) [20]это как?
INNER JOIN
не подходит Access не принимает