Соединение с двумя таблицами осталось, но если я получил дополнительную строку в таблице, то она должна быть нулевой

0

   Table A                  Table B

   id  type_id  amount        id   type_id   amount
   1     2       5000         1      4        2000
   2     4       2000         2      2        3000
                              3      2        2000
Теперь я собираюсь оставить таблицу A в таблице B
SELECT a.amount, b.amount
FROM tableA a
left JOIN tableB b on b.type_id=a.type_id

Это показывает что-то подобное

        amount               amount
          5000                 2000
          2000                 3000
          5000                 2000
--------------------------------------------------------

Я пытаюсь получить результат:

   amount              amount
   5000                 2000
   2000                 3000
   NULL                 2000
--------------------------------------------------------
  • 0
    на основе type_id вы не можете .. (в sql)
  • 0
    Так, каким образом я могу сделать это, поделится со мной.
Показать ещё 4 комментария
Теги:

1 ответ

1

Left join, принимает все элементы из левой таблицы и совпадения с правой таблицы. Результат будет нулевым для элементов с правой стороны, если совпадения не найдены.

Поэтому попробуйте заменить LEFT JOIN правой рукой.

SELECT a.amount, b.amount FROM tableA a right JOIN tableB b на b.type_id = a.type_id


Я попробовал несколько вариантов, и я думаю, что нашел лучшее решение! Попробуйте этот запрос:

выберите a.amount, b.amount из таблицы 1 правое соединение table2 b на b.id = (выберите id из таблицы2 b2, где b2.type_id = предел a.type_id 1)

Надеюсь, он работает сейчас.

  • 0
    пробовал но не работает
  • 0
    левое соединение и правое соединение дают одинаковый результат .. просто измените основную таблицу ..
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню