Конференция "Базы" » Вернуть "First" с условием [Access]
 
  • ivanoff (01.10.08 15:26) [0]
    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
  • Поросенок Винни-Пух © (01.10.08 15:34) [1]
    надо использовать закрытое объединение, а не открытое
  • ivanoff (01.10.08 15:46) [2]
    это как?

    INNER JOIN

    не подходит  Access не принимает
  • Поросенок Винни-Пух © (01.10.08 15:47) [3]
    select ... from table 1, table 2
    where table1.x = table2.y
  • ivanoff (01.10.08 15:51) [4]

    > если таковых нету чтоб вернуло NULL


    ???
  • Поросенок Винни-Пух © (01.10.08 16:01) [5]
    если таковых не будет, выборка будет пустая
  • Сергей М. © (01.10.08 16:02) [6]

    > ivanoff   (01.10.08 15:51) [4]


    И зачем тебе этот нул понадобился ?
    Без него жизнь что ли не мила или что ?
    Поясни ..
  • ivanoff (01.10.08 16:09) [7]
    эту самую выборку потом нужно обработать если там есть что-то - использую это ели нет (=NULL) знаю что надобно добавить запись в T3 с нуйным условием

    ...хочу знать стандартными средствами реализуемо или нет
  • Поросенок Винни-Пух © (01.10.08 16:16) [8]
    если там есть что-то удовлетворяющее условию, ты ее получишь.
    если нет, то ты сам хотел чтобы

    вот там нужно получить не первую запись а первую при условии T2.MyField = T3.MyField
  • Сергей М. © (01.10.08 16:28) [9]

    > ivanoff   (01.10.08 16:09) [7]


    Не прояснилось, зачем тебе этот NULL  ..


    > если там есть что-то


    Это условие соответствует непустому НД


    > ели нет


    Это условие соответствует пустому НД.

    В чем проблема, зачем тут еще нул какой-то понадобился ?
  • ivanoff (01.10.08 16:30) [10]
    так мой вопрос именно в том как построить условие так, чтоб получить ВСЕ записи из T1 а из T3 получить первое соответствующее условию.

    если Т3.MyField не соответствует условию, запись из Т1 должна попасть в выборку а на место Т3 должно быть NULL -> что значит в Т3 нету записей где  
    (T1.id3 = T3.id) AND (T2.MyField = T3.MyField)

  • Сергей М. © (01.10.08 16:37) [11]
    А-а-а !.. похоже, я начал понимать, куда гнет автор)

    Ему, видимо, RIGHT JOIN нужен, тогда при наличии хотя бы одной записи в T1 и отсутствии свя\занных записей в присоединенных таким образом T2 и T3 получится почти то что ему нужно - в НД будет одна запись с NULL во 2-м поле
  • Поросенок Винни-Пух © (01.10.08 16:39) [12]
    мои знакомые блондинки и то понятнее изъясняются
  • Sergey13 © (01.10.08 16:50) [13]
    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
  • Johnmen © (01.10.08 16:53) [14]
    Тоже потренирую телепатию :)
    Вот это что-ли:
    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

  • ivanoff (01.10.08 17:00) [15]
    неа...
    у меня несколько связок LEFT JOIN и Access не принимает RIGHT JOIN

    мне бы в ON условии присобачить
    (T1.id3 = T3.id) AND (T2.MyField = T3.MyField)

  • ivanoff (01.10.08 17:03) [16]
    :)


    > ON (T1.id3 = T3.id) AND (T2.MyField = T3.MyField)


    я тож так думал но не принимает: Join expression not supported
  • Сергей М. © (01.10.08 17:08) [17]

    > Access не принимает RIGHT JOIN


    С каких это пор ?
    http://office.microsoft.com/en-us/access/HA012314891033.aspx?pid=CH100728991033
  • ivanoff (01.10.08 17:20) [18]
    я не говорил "в принципе" не принимает

    в моем случае не принимает

    ...
    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
  • Сергей М. © (01.10.08 17:23) [19]

    > ivanoff   (01.10.08 17:20) [18]


    Воспользуйся виз.конструктором запросов самого Access'а - он сам построит лексически и синтаксически правильный текст интересующего тебя SQL-запроса.
  • ivanoff (01.10.08 17:31) [20]
    и как мне там указать второе условие
  • Сергей М. © (01.10.08 17:35) [21]

    > как мне там указать второе условие


    Что значит "как" ? Средствами мастера конструирования запросов в составе MS Access !
 
Конференция "Базы" » Вернуть "First" с условием [Access]
Есть новые Нет новых   [134473   +28][b:0][p:0.001]