从几个表中选择数据

时间:2013-07-22 11:43:23

标签: sql-server

我有两张桌子,tab_adtab_photos,每个广告可以有五张照片(或任何)。

结构:

  

tab_ad

     
      
  • ad_id
  •   
  • ad_title
  •   
  • ad_desc
  •   
     

tab_photos

     
      
  • ph_id
  •   
  • ph_path
  •   
  • ad_id
  •   

我正在尝试选择tab_ad的所有列以及tab_photos上的第一张照片(每个ad_id),如果我在{{1}上找不到ad_id应该返回 NULL

  

示例:返回ad_id,ad_title,ad_desc,ph_id,ph_path

2 个答案:

答案 0 :(得分:3)

如果数据(即LEFT JOIN)在那里不可用,请尝试tab_photos它会将NULL的值设为ad_id

SELECT ad.ad_id, ad.ad_title, ad.ad_desc, ph.ph_id, ph.ph_path
  FROM tab_ad ad 
  LEFT JOIN tab_photos ph
    ON ad.ad_id = ph.ad_id

答案 1 :(得分:1)

使用correlated sub query因此您要从第二个表格中选择top photo

SELECT 
    ad_id,
    ad_title,
    ad_desc,
    (SELECT TOP(1)ph_path FROM tab_photos b WHERE b.ad_id=a.ad_ID)
FROM tab_ad a