我有3个表,我想从中获取数据

时间:2014-09-08 09:34:44

标签: php mysql

我的3张表,即产品,乐队,产品信息

产品

CREATE TABLE IF NOT EXISTS `product` (
  `p_id` int(11) NOT NULL AUTO_INCREMENT,
  `product` varchar(50) NOT NULL,
  PRIMARY KEY (`p_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `product` (`p_id`, `product`) VALUES
(1, 'Atta'),
(2, 'OIl');

品牌

CREATE TABLE IF NOT EXISTS `brand` (
  `b_id` int(11) NOT NULL AUTO_INCREMENT,
  `p_id` int(11) NOT NULL,
  `brand` varchar(50) NOT NULL,
  `image` varchar(255) NOT NULL,
  PRIMARY KEY (`b_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;  

插入

INSERT INTO `brand` (`b_id`, `p_id`, `brand`, `image`) VALUES
(1, 1, 'Ashirvad', 'FreeVector-Blue-Squares-Vector.jpg'),
(2, 1, 'Phillsberry', 'ILBAGNOALESSI_One_02.jpg'),
(3, 2, 'Sunflower', '001-bi-fold-corporate-brochure-template-vol-1-2.jpg');

产品信息

CREATE TABLE IF NOT EXISTS `product_info` (
  `pi_id` int(11) NOT NULL AUTO_INCREMENT,
  `pro` int(11) NOT NULL,
  `b_id` int(11) NOT NULL,
  `quantity` varchar(20) NOT NULL,
  `measurement` varchar(20) NOT NULL,
  `mrp` varchar(20) NOT NULL,
  `our_price` varchar(20) NOT NULL,
  PRIMARY KEY (`pi_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

插入

INSERT INTO `product_info` (`pi_id`, `pro`, `b_id`, `quantity`, `measurement`, `mrp`, `our_price`) VALUES
(1, 1, 1, '1', 'kg', '50', '48'),
(2, 1, 2, '1', 'kg', '60', '59'),
(3, 2, 3, '1', 'ltr', '90', '86');

当我使用以下查询时

select a.product,a.p_id,b.b_id,b.brand,b.image,c.quantity,c.measurement,c.mrp,c.our_price,c.pi_id 
from product a, brand b,product_info c 
where a.p_id=b.p_id

获得3个数据循环

2 个答案:

答案 0 :(得分:1)

您需要product_info的连接条件,否则您将每个product_info行加入其他表中的行。

select a.product,a.p_id,b.b_id,b.brand,b.image,c.quantity,c.measurement,c.mrp,c.our_price,c.pi_id 
from product a, brand b,product_info c 
where a.p_id=b.p_id
and b.b_id = c.b_id

此外,您应该学习使用ANSI显式连接语法:

select a.product,a.p_id,b.b_id,b.brand,b.image,c.quantity,c.measurement,c.mrp,c.our_price,c.pi_id 
from product a
join brand b ON a.p_id = b.p_id
join product_info c ON b.b_id = c.b_id

答案 1 :(得分:0)

现在您从所有三个表中获取数据。使用joins制作所需的结果表。