2011-04-17 126 views
1

你好我有拉从搜索结果的查询,但我想左侧连接结果被限制到1限制左连接?

这里是左连接:

LEFT JOIN #__ezrealty_siteplan AS sp ON sp.listing_id = a.id " 

我已经试过

LEFT JOIN (SELECT * FROM jos_ezrealty LEFT JOIN jos_ezrealty_siteplan AS sp ON (sp.listing_id =jos_ezrealty.id) LIMIT 1) AS sp ON (sp.listing_id=jos_ezrealty.id) 

整个查询:

$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; 

回答

0
LEFT JOIN (SELECT * 
      FROM #__ezrealty_siteplan 
      GROUP BY listing_id) 
     AS sp 
     ON sp.listing_id = a.id 
0

在SQL硒你可以使用CROSS APPLY。在其他DBMS中,可以使用分区(窗口函数ROW_NUMBER)。

对于MySQL,一种解决方案是使用子查询来获得LIMIT 1,然后将其加入到表中,例如,

select a.col1, a.col2, a.col3, b.col1, b.col2 
from 
(
select a.col1, a.col2, a.col3, (select b.id as b_id from tbl_b b where b.a_id=a.id limit 1) 
from tbl_a a 
) a 
left join tbl_b b on b.id=a.b_id 
+0

看到我的编辑,请什么 – MSD 2011-04-17 21:35:16

+0

我应该在里面看到了什么?请尝试应用我给你的东西。您可以将所有左连接放入SELECT级别的子查询中,然后再次加入LIMIT-ed 1值。 – RichardTheKiwi 2011-04-18 01:08:50

0

我认为这会给你你想要

SELECT DISTINCT sp.id ,* FROM jos_ezrealty LEFT JOIN jos_ezrealty_siteplan AS sp ON sp.listing_id =jos_ezrealty.id 
+0

请参阅上面的编辑谢谢 – MSD 2011-04-17 21:29:07

+0

这是否完成类似于此的任何内容:左连接(SELECT * FROM #__ezrealty_siteplan GROUP BY listing_id)AS sp ON sp.listing_id = a.id 我已经得到了我想要的结果,是你的不同/更好? – MSD 2011-04-19 14:51:19

+0

我不完全确定是否有任何区别,或者即使我的解决方案为您提供了期望的结果,但它确实会给您想要的结果,那么我会查看数据返回所需的时间 – mcgrailm 2011-04-19 15:25:50