我有三个结构表
CREATE TABLE IF NOT EXISTS `refrence` (
`products_ref_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`categories_id` int(11) NOT NULL,
`Product_property` varchar(255) NOT NULL,
`Product_reference` varchar(50) NOT NULL,
PRIMARY KEY (`products_ref_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
CREATE TABLE IF NOT EXISTS `product_details` (
`products_id` int(11) NOT NULL AUTO_INCREMENT,
`categories_id` int(11) NOT NULL,
`FieldA` varchar(30) NOT NULL,
`FieldB` varchar(50) NOT NULL,
`FieldC` varchar(255) NOT NULL,
`FieldD` varchar(255) NOT NULL,
`FieldE` varchar(255) NOT NULL,
`FieldF` varchar(255) NOT NULL,
`Field_desc` text NOT NULL,
PRIMARY KEY (`products_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=98 ;
这里我从refrence表中提取Product_property&的Product_reference值。 categories_id as
SELECT Product_reference FROM refrence where categories_id=3 AND Product_property ='xxx'
现在,此Product_reference是product_details表中的字段名称,假设结果为 abc 。所以我想从product_details表中提取不同的abc为
SELECT Distinct abc FROM product_details where categories_id=3
现在我想将查询结合到一个,将这些查询写入单个查询的方法是什么。
我试过这个
SELECT Distinct (
SELECT Product_reference FROM refrence where categories_id=3 AND Product_property ='xxx'
) as aa FROM product_details where categories_id=3
但它不起作用,可能是我缺少一些语法。
答案 0 :(得分:1)
在不知道什么不起作用的情况下,您似乎正在努力实现这一目标:
SELECT r.product_reference
FROM refrence AS r
LEFT JOIN categories AS c ON (c.categories_id = r.categories_id AND r.categories_id=3 AND r.product_property='zzz')
WHERE c.categories_id=1
正如Eggyal所指出的,由于category_id = 1 AND category_id = 3的条件不可能,因此总是不会返回任何内容,因此: 他们都必须是1或两者都必须是3 要么 它们是完全不同的“类别”,它们是无关的,或恰好具有相同的名称。