您好我有一个products
表,其中包含字段
products_id,products_number,products_status,products_price
其中products_id
为auto_increment
和PRIMARY_KEY
。
我有其他表products_description
有字段
products_id,language_id,products_description,products_name
products_id and language_id
或复合主键。请记住products_id
与products
表中的相同。现在在products_description
表格中,针对不同的products_id
,针对一个language_id
的记录不止一条。
我的问题
我必须从products
表中的products_name
表和products_description
列获取所有列。我已经应用了像这样的简单连接查询
SELECT p.products_id,p.products_model,p.products_price,p.products_status,pd.products_name FROM products p, products_description pd WHERE p.products_id=pd.products_id
但我知道这个查询是错误的,因为如果一个产品在products_description
表中有多个记录,它会返回多行。
我想要什么
我想从products_description
中针对查询中的每个products_id
产品table table if no
language_id is given in query. I know that it can be done if I apply
language_id`条件提取一条记录。但有没有办法获得记录
答案 0 :(得分:1)
select p.*,
pd.products_name
from products p,
products_description pd
where p.products_id = pd.products_id
and pd.language_id =
(select min(language_id)
from products_description pd2
where pd.products_id = pd2.products_id)
应该做的伎俩。
答案 1 :(得分:1)
假设返回的任何描述都没有问题。 使用products_description上的相关子查询来获取相关products_ID的最小值语言ID
select p.products_id, p.products_number,p. products_status,p. products_price
pd.language_id, pd.products_description, pd.products_name
from products p,
products_description pd,
(Select min(Language_ID) mLID
from products_Description ipd
where PD.Products_ID=ipd.products_ID
and ipd.language_ID = pd.language_ID) A
where p.products_id = pd.products_id