-
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
-
надо использовать закрытое объединение, а не открытое
-
это как?
INNER JOIN
не подходит Access не принимает
-
select ... from table 1, table 2
where table1.x = table2.y
-
> если таковых нету чтоб вернуло NULL
???
-
если таковых не будет, выборка будет пустая
-
> ivanoff (01.10.08 15:51) [4]
И зачем тебе этот нул понадобился ?
Без него жизнь что ли не мила или что ?
Поясни ..
-
эту самую выборку потом нужно обработать если там есть что-то - использую это ели нет (=NULL) знаю что надобно добавить запись в T3 с нуйным условием
...хочу знать стандартными средствами реализуемо или нет
-
если там есть что-то удовлетворяющее условию, ты ее получишь.
если нет, то ты сам хотел чтобы
вот там нужно получить не первую запись а первую при условии T2.MyField = T3.MyField
-
> ivanoff (01.10.08 16:09) [7]
Не прояснилось, зачем тебе этот NULL ..
> если там есть что-то
Это условие соответствует непустому НД
> ели нет
Это условие соответствует пустому НД.
В чем проблема, зачем тут еще нул какой-то понадобился ?
-
так мой вопрос именно в том как построить условие так, чтоб получить ВСЕ записи из T1 а из T3 получить первое соответствующее условию.
если Т3.MyField не соответствует условию, запись из Т1 должна попасть в выборку а на место Т3 должно быть NULL -> что значит в Т3 нету записей где
(T1.id3 = T3.id) AND (T2.MyField = T3.MyField)
-
А-а-а !.. похоже, я начал понимать, куда гнет автор)
Ему, видимо, RIGHT JOIN нужен, тогда при наличии хотя бы одной записи в T1 и отсутствии свя\занных записей в присоединенных таким образом T2 и T3 получится почти то что ему нужно - в НД будет одна запись с NULL во 2-м поле
-
мои знакомые блондинки и то понятнее изъясняются
-
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
-
Тоже потренирую телепатию :)
Вот это что-ли:
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
-
неа...
у меня несколько связок LEFT JOIN и Access не принимает RIGHT JOIN
мне бы в ON условии присобачить
(T1.id3 = T3.id) AND (T2.MyField = T3.MyField)
-
:)
> ON (T1.id3 = T3.id) AND (T2.MyField = T3.MyField)
я тож так думал но не принимает: Join expression not supported
-
-
я не говорил "в принципе" не принимает
в моем случае не принимает
...
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
-
> ivanoff (01.10.08 17:20) [18]
Воспользуйся виз.конструктором запросов самого Access'а - он сам построит лексически и синтаксически правильный текст интересующего тебя SQL-запроса.