首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL和PHP中的连接查询

MYSQL和PHP中的连接查询
EN

Stack Overflow用户
提问于 2015-08-07 19:22:48
回答 3查看 298关注 0票数 3

我将从MYSQL中的所有表中生成特定信息。我的数据库里有5张桌子。即:

  1. 广告商 创建表advertiser ( Adv\_id int(11) NULL AUTO_INCREMENT,Name char(20) NULL,F\_Name char(20) NULL,Address varchar(40) NULL,CNIC int(13) NULL,Contact int(11) NULL,Monthly\_fee varchar(10) NULL,Region varchar(10) NULL),Reg\_date varchar(10) NULL,主键(Adv\_id) ) ENGINE=InnoDB AUTO_INCREMENT=3默认CHARSET=latin1;
  2. company_information 创建表company\_information ( Company\_id int(11) NULL AUTO_INCREMENT,Company\_Name varchar(20) NULL,Company\_Contact int(11) NULL,Company\_Address varchar(30) NULL,主键(Company\_id) ) ENGINE=InnoDB默认CHARSET=latin1;
  3. 广告 创建表advertisement ( Ads\_id int(11) NULL AUTO_INCREMENT,Adv\_id\_id int(11) NULL,Company\_id int(11) NULL,Ads\_Title varchar(20) NULL,Ads\_Description varchar(40) NULL,Ads\_Image varchar(50) NULL,主键(Ads\_id),KEY Adv\_id (Adv\_id\_id),KEY Company\_id (Company\_id),约束Adv\_id外键(Adv\_id\_id)在更新级联的删除级联上引用advertiser (Adv\_id),在更新级联上引用company\_information (Company\_id),在删除级联上引用company\_information(Company\_id)) ENGINE=InnoDB AUTO_INCREMENT=5默认CHARSET=latin1;
  4. ads_type 创建表ads\_type ( Ads\_type\_id int(11) NULL AUTO_INCREMENT,Advertisement\_id int(11) NULL,Full\_Channel\_Ads varchar(30) NULL,Logo\_Ads varchar(30) NULL,Com\_Break\_Ads varchar(30) NULL,主键(Ads\_type\_id),密钥Advertisement\_id (Advertisement\_id),约束Advertisement\_id外键(<Ads\_type\_id>D55)引用advertisement (Ads\_id)对删除级联的ENGINE=InnoDB默认CHARSET=latin1;
  5. ads_date 创建表ads\_date ( Ads\_date\_id int(11) NULL AUTO_INCREMENT,Ads\_id int(11) NULL,Starting\_Date varchar(30) NULL,Expiry\_Date varchar(30) NULL,主键(Ads\_date\_id),密钥Ads\_id (Ads\_id),约束Ads\_id外键(Ads\_id)引用advertisement (<Ads\_date\_id>D71)对DELETE级联更新级联的ENGINE=InnoDB默认CHARSET=latin1;

我想要寻回

  • 名称、CNIN和表广告公司的联系人
  • Company_Name来自company_information
  • 广告Ads_Title
  • Starting_Date和Expiry_Date来自ads_date。

对于上面的行,这个查询工作得很好:

代码语言:javascript
复制
SELECT * 
    FROM ads_date a
    JOIN advertisement ci ON ci.Ads_id = a.Ads_id
    JOIN company_information ar ON ar.Company_id = ci.Company_id
    JOIN advertiser ad ON ad.Adv_id = ci.Advertiser_id
    WHERE Expiry_Date >= CURDATE()

问题:我还想从ads_type中检索Advertisement_type。如何使用JOIN查询完成此操作?有人能解释吗?

EN

回答 3

Stack Overflow用户

发布于 2015-08-07 19:27:20

你需要另一个join

代码语言:javascript
复制
SELECT * 
FROM   ads_date a
JOIN   advertisement ci ON ci.Ads_id = a.Ads_id
JOIN   company_information ar ON ar.Company_id = ci.Company_id
JOIN   advertiser ad ON ad.Adv_id = ci.Advertiser_id
JOIN   ads_type at ON  at.Advertisement_id = ci.Ads_id -- Here
WHERE  Expiry_Date >= CURDATE()
票数 0
EN

Stack Overflow用户

发布于 2015-08-07 19:29:00

请尝试以下查询:

代码语言:javascript
复制
SELECT * 
    FROM ads_date a
    JOIN advertisement ci ON ci.Ads_id = a.Ads_id
    JOIN company_information ar ON ar.Company_id = ci.Company_id
    JOIN advertiser ad ON ad.Adv_id = ci.Advertiser_id

    JOIN ads_type at ON at.Advertisement_id =ci.Ads_id

    WHERE Expiry_Date >= CURDATE()
票数 0
EN

Stack Overflow用户

发布于 2019-04-29 12:23:17

添加另一个连接作为

代码语言:javascript
复制
JOIN   ads_type at ON  at.Advertisement_id = ci.Ads_id

然后使用group_by at.Advertisement_id来避免重复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31885185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档