0

我有三个结构表

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 ;

在这里,我从参考表中提取 Product_reference 值关于 Product_property 和 categories_id 为

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

但它不起作用,可能是我错过了一些语法。

4

1 回答 1

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 和 category_id=3 的不可能条件,这将始终不返回任何内容,所以要么:它们都必须为 1,要么都必须为 3,或者它们是完全不同的“类别”是不相关的,或者只是碰巧有相同的名字。

于 2012-04-28T13:49:54.863 回答