2012-04-28 24 views
0

私は複数の選択クエリを1つに結合する方法は?

SELECT Product_reference FROM refrence where categories_id=3 AND Product_property ='xxx' 

としてProduct_property & categories_idに対するrefrenceテーブルからProduct_reference値を抽出しています構造

ここ
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 ; 

との3つのテーブルを持っている今、このProduct_referenceがproduct_detailsテーブルと仮定する結果内のフィールド名です。 abcです。だから私は

SELECT Distinct abc FROM product_details where categories_id=3 

としてproduct_detailsテーブルから明確なABCを抽出したい今、私は1に、クエリの両方を組み合わせたい、単一のものにしてこれらのクエリを記述するための方法は何ですか。私はこの

SELECT Distinct (
SELECT Product_reference FROM refrence where categories_id=3 AND Product_property ='xxx' 
) as aa FROM product_details where categories_id=3 

しかし、そのは動作していないを試してみました

は、私はいくつかの構文をしないのですすることができます。動作していないものを、あなたがこれを実現しようとしているように見えます知らず

+1

"Bit does not working" - より具体的にできますか?エラーは何ですか? –

+0

categories_idはすべてのテーブルで同じです....私はあなたが外部キーとしてそれを使用しているのですか? –

+0

あなたのクエリを見ると、なぜ 'categories_id = 3'のレコードに対して' refrence'を検索していますか? 'categories_id = 1'レコードの' product_details' - あなたのクエリが意図しているものについてのあなたの説明それは理解することが非常に難しいです。おそらくあなたは明らかにすることができますか? – eggyal

答えて

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である必要があります。 または これらは互いに無関係で、まったく同じ名前を持つまったく異なる「カテゴリ」です。

+1

これは、**常に**テーブルが結合されている 'categories_id'のフィルターが競合するため空のレコードセットを返すことになります。 – eggyal

+0

おっと...十分なデータを試さずにエディタから切り取るのが速すぎます。 – GDP

関連する問題