Получить результаты из второй таблицы, объединенной, даже если первоначальный выбор не удался, и наоборот
Я использую оператор 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 ответ
Тебе необходимо 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
,