Как объединить две таблицы, но включить все строки, даже если они пустые или нулевые?

0

У меня две таблицы. Я хочу объединить их, но включать строки, которые не возвращают значение. Этот вопрос, вероятно, будет помечен как дубликат или что-то еще, но я уже пробовал читать другие сообщения и все еще не удалось. Поэтому я мог бы быть ниже среднего программиста MySQL. Надеюсь, кто-то может помочь.

table_price_list

item_id price_type_id   price_amount
1       1               100.00
1       2               95.00
1       3               90.00
1       4               85.00
1       5               80.00
1       6               75.00
2       1               201.56
2       2               196.45
2       3               191.78
2       4               186.36
3       1               1210.12
3       2               1205.45
3       3               1200.69
3       4               1195.48
3       5               1190.98

table_price_type

price_type_id   price_type
1               srp
2               reseller
3               distributor
4               mega
5               depot
6               special

Желаемый выход

item_id price_type_id   price_type
1       srp             100.00
1       reseller        95.00
1       distributor     90.00
1       mega            85.00
1       depot           80.00
1       special         75.00
2       srp             201.56
2       reseller        196.45
2       distributor     191.78
2       mega            186.36
2       depot           null
2       special         null
3       srp             1210.12
3       reseller        1205.45
3       distributor     1200.69
3       mega            1195.48
3       depot           1190.98
3       special         null

Лучшее, что я могу получить до сих пор, это то, что это оставляет пустым price_type

 select b.item_id, a.price_type, b.price_amount
    from table_price_type A
    left outer join table_price_list B on A.price_type_id=B.price_type_id

Он не должен быть нулевым, он может быть пустым ('').

  • 0
    Почему одни и те же item_ids? идентификаторы должны быть уникальными. Столбец типа цены содержит строки, а не значения, как в желаемом выводе. Вы пробовали простое левое соединение? (без «внешнего»?). Ваши две таблицы имеют одинаковое имя?
  • 0
    Вы хотите заменить null какой-либо конкретной строкой (в вашем случае пробел)?
Показать ещё 2 комментария
Теги:

1 ответ

0

Вы можете использовать левое соединение для получения требуемого результата.

select b.item_id, a.price_type, b.price_amount
from table_price_type A
left join table_price_list B on A.price_type_id=B.price_type_id
  • 0
    Извините, но выходные данные для этого пропускают тип price_type, который является пустым / нулевым.
  • 0
    Потому что у вас нет нулевых значений в таблице прайс-листов. Я думаю, что вы хотите полное внешнее соединение: stackoverflow.com/questions/7978663/mysql-full-join
Показать ещё 1 комментарий

Ещё вопросы

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