我想限制的最後一個左連接到只有1結果MySQL的左連接限制
$query="SELECT a.*, cc.name AS category, ee.ezcity AS proploc
, dd.name AS statename, bb.name AS countryname
, u.logo_image AS logo_image, u.mid AS mid
, u.dealer_name AS dealer_name, u.dealer_company AS dealer_company
, u.dealer_phone AS dealer_phone, u.dealer_mobile AS dealer_mobile
, u.published AS dealerpublished, sp.tenant AS tenant
, sp.spacenum AS spacenum, sp.sf AS sf, sp.image AS tenantimage
, u.dealer_type AS dealer_type
FROM #__ezrealty as a"
. "\n LEFT JOIN #__ezrealty_catg AS cc ON cc.id = a.cid"
. "\n LEFT JOIN #__ezrealty_locality AS ee ON ee.id = a.locid"
. "\n LEFT JOIN #__ezrealty_state AS dd ON dd.id = a.stid"
. "\n LEFT JOIN #__ezrealty_country AS bb ON bb.id = a.cnid"
. "\n LEFT JOIN #__ezrealty_profile AS u ON u.mid = a.owner"
. "\n LEFT JOIN #__ezrealty_siteplan AS sp ON sp.listing_id = a.id "
. "\n WHERE $extrastring AND a.published = '1' $vacant
AND cc.access <= $my->gid $wheres "
. $order.' LIMIT '.$pageNav->limitstart.', '.$pageNav->limit;
我曾嘗試:
. "\n LEFT JOIN (SELECT listing_id FROM #__ezrealty_siteplan LIMIT 1) sp
ON sp.listing_id = a.id"
它看起來像你從ezrealty_siteplan隨機選擇'listing_id'?你怎麼知道這會匹配'a.id'?如果你不把'(SELECT listing_id FROM #__ezrealty_siteplan LIMIT 1)'改爲'(SELECT listing_id FROM #__ezrealty_siteplan WHERE listing_id = .... LIMIT 1)' – Johan 2011-04-18 22:39:12
對於你想要做的事情非常困惑。如果你將'LEFT JOIN'改爲'INNER JOIN',這有幫助嗎? – Johan 2011-04-18 22:40:43
我用它解決了這個問題: LEFT JOIN(SELECT * FROM #__ezrealty_siteplan GROUP BY listing_id)AS sp ON sp.listing_id = a.id 問題是每個房地產上市是一個上市本身(整個購物中心)和列表需要包含購物中心中租賃和可用空間的子列表。當用戶搜索時,如果購物中心有5個可用空間,它將顯示相同的購物中心5倍。 – MSD 2011-04-19 14:42:16