具有3个表的复杂mysql查询

时间:2010-11-10 13:10:32

标签: php mysql

现在我有三张桌子好吗?

  1. catgories | CAT_ID
  2. 区域| AREA_ID
  3. 广告| cat_id - area_id
  4. 现在我希望获得包含广告的catgories下的区域 这个意思 - 呕吐 - 区域密集的广告 例如,我将汽车作为卡车和埃及作为区域和汽车作为广告出售 现在我想要显示包含广告的catgories下的区域 这个意思 我有埃及美国canda 还有一则广告在埃及 现在我想要表现出来 汽车 - 埃及 如果我在美国还有一个广告 它出现了 汽车 - 埃及 - 美国 这意味着给我带有包含广告的区域

2 个答案:

答案 0 :(得分:1)

添加国家/地区:

SELECT *
  FROM areas
 WHERE area_id in (SELECT area_id FROM ads) 

有汽车广告的国家/地区:

SELECT *
  FROM areas
 WHERE area_id in (
    SELECT ads.area_id
      FROM ads,categories
     WHERE ads.cat_id = categories.cat_id
       AND categories.cat_name = 'cars') 

是你的意思吗?

答案 1 :(得分:1)

您正在寻找GROUP BY

SELECT cat_id, group_concat(area_id) from ads group by cat_id;

假设* cat_id *是实际值(汽车)而不是auto_increment。如果是,请使用INNER JOIN