Получить результаты из второй таблицы, объединенной, даже если первоначальный выбор не удался, и наоборот - PullRequest
0 голосов
/ 22 января 2019

Я использую оператор SELECT ниже, чтобы соединить таблицу свойств с таблицей epc.Не всегда EPC доступен для собственности.Я также хочу таблицу epc, если свойство не существует.

SELECT p.dateAdded, p.paon, p.saon, p.street, p.locality, p.townCity, p.district, p.county, p.propertyType, 
     p.propertyType, p.oldNew, p.postcode, p.tenure, p.ppd, p.bedrooms, p.bathrooms, p.receptions, p.lastSalePrice, p.lastTransferDate, 
     e.INSPECTION_DATE, e.TOTAL_FLOOR_AREA, e.CURRENT_ENERGY_RATING, e.POTENTIAL_ENERGY_RATING, e.CURRENT_ENERGY_EFFICIENCY, e.POTENTIAL_ENERGY_EFFICIENCY, 
     e.PROPERTY_TYPE 
      FROM property p
      LEFT JOIN epc e ON p.postcode = e.POSTCODE AND CONCAT(p.paon, ', ', p.street) = e.ADDRESS1 
      WHERE p.paon = 8 AND p.postcode = "TS6 9LN" 
      ORDER BY e.INSPECTION_DATE, p.lastTransferDate DESC 
      LIMIT 1

Можно ли выбрать обе таблицы, но если 1 не существует, выберите 1, который существует?

1 Ответ

0 голосов
/ 23 января 2019

Вам нужен FULL OUTER JOIN. К сожалению, MySQL не реализует эту часть стандарта SQL. Вы можете смоделировать полное внешнее объединение с помощью двух внешних объединений, но оно становится длинным, и, возможно, довольно громоздким и подверженным ошибкам.

Например:

select a.col1, b.col2
from table_a a
LEFT join table_b b on ...
union -- here we union both outer joins
select a.col1, b.col2
from table_a a
RIGHT join table_b b on ...

Во втором SELECT роли таблиц инвертированы, поскольку в нем используется RIGHT JOIN вместо LEFT JOIN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...