mysql左连接获取两个查询

mysql左连接获取两个查询,mysql,Mysql,好的,我有两张桌子,房子和照片。我想说的是 对于每一所房子,我想打电话给该房子的照片数量,以及该照片的最低排序顺序号码 我尝试了不同类型的左连接,一个返回我的全部照片,这很好,但不返回最小排序顺序,另一个返回我的最小排序顺序,但不给我全部照片 我现在的代码是 SELECT properties.p_id, properties.s_property_id,

好的,我有两张桌子,房子和照片。我想说的是 对于每一所房子,我想打电话给该房子的照片数量,以及该照片的最低排序顺序号码

我尝试了不同类型的左连接,一个返回我的全部照片,这很好,但不返回最小排序顺序,另一个返回我的最小排序顺序,但不给我全部照片

我现在的代码是

SELECT properties.p_id,                                         properties.s_property_id,                                   properties.a_property_id,
                            properties.p_advert_heading,                                properties.p_postcode,                                      properties.p_price,
                            properties.p_bedrooms,                                      properties.p_bathrooms,                                     properties.p_status,                                        
                            properties.p_priority,                                      property_photos.photo_url,                              property_photos.sort_order, property_photos.photo_local,                                    
                            COUNT(property_photos.p_id) AS tot_photos                                       
                            FROM properties 
                            LEFT JOIN property_photos on properties.p_id = property_photos.p_id                         
                            WHERE  properties.is_archieved = 0 AND properties.p_status = 1 AND  properties.a_id = 16 
                            GROUP BY properties.p_id 
即:

因此,我需要以最小排序顺序查找图片总数和图片id…

您只需使用分组方式和聚合功能:

SELECT
    h.property_id,
    h.property_name,
    COUNT(p.photo_id) AS photo_count,
    MIN(p.sort_order) AS min_sort
FROM house_table AS h
LEFT JOIN photo_table AS p
  ON h.property_id = p.property_id
GROUP BY h.property_id

通过使用子字符串\u index/group\u concat方法获取第一个照片\u id,您可以最容易地获取这两个值:


为什么要这么做而不是使用简单的聚合函数?@MikeBrant。因为这是一个没有连接的单一聚合函数。它应该比其他方法执行得更好。您的答案不会返回具有最小排序顺序的属性。然而,我并没有不礼貌地否决你的答案。@GordonLinoff问题陈述似乎表明OP正在寻找每个属性的最小排序顺序值,不是具有最低排序顺序值的单个属性。该语句还表示该照片的最小排序顺序号表明OP在英语方面有困难,并且他/她对某张照片感兴趣。我把这张照片解读为房屋最低排序顺序的照片;对我来说,这似乎是唯一合理的解释。编辑了我的问题并添加了代码Jonathon为什么minsort_order不能满足您的要求?我已使用另一个子查询进行排序,但无法编写它,因为我没有足够的声誉,但感谢you uto all为我提供的帮助。非常感谢
SELECT
    h.property_id,
    h.property_name,
    COUNT(p.photo_id) AS photo_count,
    MIN(p.sort_order) AS min_sort
FROM house_table AS h
LEFT JOIN photo_table AS p
  ON h.property_id = p.property_id
GROUP BY h.property_id
select property_id, count(*) as numphotos,
       substring_index(group_concat(photo_id order by sort_order), ',', 1) as min_photo_id
from photo_table pt
group by property_id;