JOIN Query In MYSQL and PHP
I am going to generate specific information from all the tables in MYSQL. I have 5 tables in my database. Ie:
advertiser
CREATE TABLE advertiser (
Adv_id int(11) NOT NULL AUTO_INCREMENT,
Name char(20) NOT NULL,
F_Name char(20) NOT NULL,
Address varchar(40) NOT NULL,
CNIC int(13) NOT NULL,
Contact int(11) NOT NULL,
Monthly_fee varchar(10) NOT NULL,
Region varchar(10) NOT NULL,
Reg_date varchar(10) NOT NULL,
PRIMARY KEY ( Adv_id ) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
company_information
CREATE TABLE company_information ( Company_id int(11) NOT NULL AUTO_INCREMENT, Company_Name varchar(20) NOT NULL, Company_Contact int(11) NOT NULL, Company_Address varchar(30) NOT NULL, PRIMARY KEY ( Company_id ) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
advertisement
CREATE TABLE advertisement ( Ads_id int(11) NOT NULL AUTO_INCREMENT, Adv_id_id int(11) NOT NULL, Company_id int(11) NOT NULL, Ads_Title varchar(20) NOT NULL, Ads_Description varchar(40) NOT NULL, Ads_Image varchar(50) NOT NULL, PRIMARY KEY ( Ads_id ), KEY Adv_id ( Adv_id_id ), KEY Company_id ( Company_id ), CONSTRAINT Adv_id FOREIGN KEY ( Adv_id_id ) REFERENCES advertiser ( Adv_id ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT advertisement_ibfk_1 FOREIGN KEY ( Company_id ) REFERENCES company_information ( Company_id ) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
ads_type
CREATE TABLE ads_type ( Ads_type_id int(11) NOT NULL AUTO_INCREMENT, Advertisement_id int(11) NOT NULL, Full_Channel_Ads varchar(30) NOT NULL, Logo_Ads varchar(30) NOT NULL, Com_Break_Ads varchar(30) NOT NULL, PRIMARY KEY ( Ads_type_id ), KEY Advertisement_id ( Advertisement_id ), CONSTRAINT Advertisement_id FOREIGN KEY ( Advertisement_id ) REFERENCES advertisement ( Ads_id ) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ads_date
CREATE TABLE ads_date ( Ads_date_id int(11) NOT NULL AUTO_INCREMENT, Ads_id int(11) NOT NULL, Starting_Date varchar(30) NOT NULL, Expiry_Date varchar(30) NOT NULL, PRIMARY KEY ( Ads_date_id ), KEY Ads_id ( Ads_id ), CONSTRAINT Ads_id FOREIGN KEY ( Ads_id ) REFERENCES advertisement ( Ads_id ) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
I want to retrive
This Query work well for the above rows :
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()
Problem: I also want to retrive Advertisement_type from ads_type. how can I do this with a JOIN query? Can any one explain?
你需要另一个join :
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()
请尝试以下查询:
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()
链接地址: http://www.djcxy.com/p/59702.html
上一篇: Web应用程序监控最佳实践
下一篇: 在MYSQL和PHP中加入查询
