Я немного потерял здесь ...SQL Sub-select как поле?
У меня есть несколько таблиц, которые я хотел бы, чтобы вытащить единую запись из: Unit
, Building
, Owner
и Picture
.
Вот мой запрос до сих пор:
SELECT building.`Street_Address`
, building.`Building_Name`
, building.`Building_Type`
, CONCAT(building.`Cross_Street_1`, ' & ', building.`Cross_Street_2`) Cross_Streets
, building.`Cross_Street_1`
, building.`Cross_Street_2`
, building.`Access` Building_Access
, owner.`Company_Name`
, owner.`Contact_Or_Reference`
, owner.`Landlord_Phone`
, picture.`Path_To_Picture_On_Server`
, picture.`Picture_Category`
, unit.`Apartment_Number`
, unit.`Unit_Size_Number` Size
, unit.`Is_Doorman`
, unit.`Is_Furnished`
, unit.`Is_Elevator`
, unit.`Is_Pets`
, unit.`Is_OutdoorSpace`
, unit.`Rent_Price`
, unit.`Baths`
, unit.`Access` Unit_Access
, unit.`fourd_id`
, unit.`Updated_Date`
, unit.`Occupancy_Date`
, unit.`Term`
, unit.`Incentives`
, unit.`Info_OutdoorSpace`
, unit.`List_Date`
, zone.`Description`
FROM 4D_Units unit
JOIN 4D_Building building
ON unit.`BUILDING_RecID` = building.`fourd_id`
JOIN 4D_Zones zone
ON building.`ZONES_RecID` = zone.`fourd_id`
LEFT JOIN 4D_Owners owner
ON unit.`OWNER_RecID` = owner.`fourd_id`
LEFT JOIN 4D_Building_Picts picture
ON (building.`fourd_id` = picture.`BUILDING_RecID` AND picture.`Picture_Category` = 'Front')
WHERE unit.`id` = 49901
Это прекрасно работает как есть, за исключением того, что возвращение запись будет только когда есть картина «Front» в записи (если он присутствует). Моя проблема заключается в том, что существует несколько различных типов фотографий, которые могут быть связаны с возвратной записью, включая «Панорама», «Интерьер» и «План этажей» ... все разные возможные значения для picture.Picture_Category
.
Есть ли способ вернуть эти значения (если они присутствуют, как указано выше) в возвращаемом наборе без отдельного запроса? Я хочу, чтобы возвращаемый набор включал (если присутствует) псевдонимы для всех четырех возможных вариантов picture.Picture_Category
: «Фронт», «Панорама», «Интерьер», & «План этажей» (с их собственным уникальным picture.Path_To_Picture_On_Server
, связанным с ним).
Это имеет смысл?
Yup! То, что я искал ... однако, я возвращаю 4 идентичных записи вместо 1, если все 4 присутствуют ... Должен ли я просто «LIMIT 1», или есть ли что-то другое, что нужно сделать вместо этого? – neezer
Я забыл изменить предложения ON, чтобы ссылаться на каждую подтаблицу, поэтому она дублировала. Проблема заключалась в том, что у меня был 'building.fourd_id = picture.BUILDING_RecID', но он должен был быть' = pic_front.BUILDING_RecID' и так далее. Версия теперь должна делать только один раз - взгляните и дайте мне знать. – chmullig