За последние 24 часа нас посетили 17797 программистов и 1678 роботов. Сейчас ищут 897 программистов ...

Если поле не NULL, то JOIN с условием, если NULL - без услов

Тема в разделе "MySQL", создана пользователем Till483, 19 июн 2013.

  1. Till483

    Till483 Активный пользователь

    С нами с:
    18 ноя 2011
    Сообщения:
    15
    Симпатии:
    0
    Здравствуйте. Имеем две таблицы, tbl1 и tbl2. Джойним одну к другой:
    Код (Text):
    1. SELECT * FROM tbl1 LEFT JOIN tbl2 ON tbl2.id = tbl1.id
    В tbl1 и tbl2 также есть колонка city_id. Нужно как-то прописать условие, чтобы если tbl1.city_id не NULL - то в выражении WHERE (или в выражении ON в JOIN) было условие WHERE tbl2.city_id = tbl1.city_id, а если tbl1.city_id является NULL, то такого условия не было. Можно это реализовать? Пробовал IF и CASE и прописывал их в WHERE, но то ли не так приписывал, то ли... В общем прошу помощи.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Если поле не NULL, то JOIN с условием, если NULL - без у

    а что будет выбираться из таблицы, если условия нету? о_О
     
  3. Till483

    Till483 Активный пользователь

    С нами с:
    18 ноя 2011
    Сообщения:
    15
    Симпатии:
    0
    Re: Если поле не NULL, то JOIN с условием, если NULL - без у

    Уже этот запрос LEFT JOIN tbl2 ON tbl2.id = tbl1.id определенным образом ограничивает условия выборки, нет? Не вижу проблемы.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Если поле не NULL, то JOIN с условием, если NULL - без у

    А, я не углядел, что это разные вещи. =)
     
  5. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Re: Если поле не NULL, то JOIN с условием, если NULL - без у

    tbl1.city_id IS NULL OR tbl2.city_id = tbl1.city_id ?
     
  6. Till483

    Till483 Активный пользователь

    С нами с:
    18 ноя 2011
    Сообщения:
    15
    Симпатии:
    0
    Re: Если поле не NULL, то JOIN с условием, если NULL - без у

    Да-да, вы правы. Уже подсказали. Все было так просто, а я лез в ненужные дебри.