Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
125 views
in Technique[技术] by (71.8m points)

MySQL query advice required

I have the following table representing products and their attributes/properties. I need to write a query that will get the value of the property named Insert Style for products where the First Choice Material is Gold.

enter image description here

I got this far:

SELECT * 
FROM shop_product_properties
WHERE name = 'Insert Size'
AND product_id IN (
    SELECT DISTINCT product_id
    FROM shop_product_properties
    WHERE ((LOWER(name) = 'first choice material'
    AND value = 'Aluminium') AND (LOWER(name) = 'insert style' AND value = 'CCGT'))
);
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I need to write a query that will get all value with name Insert Style

So start with that:

SELECT * 
FROM shop_product_properties
WHERE name = 'Insert Style';

where First Choice Material = Gold AND they have the same product_id

Then introduce a subquery:

SELECT * 
FROM shop_product_properties
WHERE name = 'Insert Style'
AND product_id IN (
    SELECT DISTINCT product_id
    FROM shop_product_properties
    WHERE name = 'First Choice Material'
    AND value = 'Gold'
);

http://sqlfiddle.com/#!2/ecfb4/1


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...