Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql子查询返回多行_Mysql - Fatal编程技术网

Mysql子查询返回多行

Mysql子查询返回多行,mysql,Mysql,我有两张桌子 产品标识,类别标识 产品选项选项选项id,产品id 我想在类别id为%%的产品选项中插入这些产品 如有任何建议,将不胜感激 我的问题是: select (select product_id from oc_product where oc_product.product_id = oc_product_option.product_id) as product_id, 15 as option_id, '' as value, 0 as required from oc

我有两张桌子

产品标识,类别标识 产品选项选项选项id,产品id 我想在类别id为%%的产品选项中插入这些产品

如有任何建议,将不胜感激

我的问题是:

select (select product_id 
from oc_product 
where oc_product.product_id = oc_product_option.product_id) as product_id,
15 as option_id, '' as value,   
0 as required 
from oc_product_option 
inner join oc_product_to_category c 
on oc_product_option.product_id = c.product_id 
where c.category_id = 98 

我给出了4条记录,但我想要所有类别_id=98的产品,因为我知道我有很多类别_id=98的产品

您应该插入oc_product_选项表,而不是加入它。这将只返回已经有选项的产品,而不是该类别中的所有产品

INSERT INTO oc_product_option (product_id, option_id, value, required)
SELECT p.product_id, 15 AS option_id, '' AS value, 0 AS required
FROM oc_product AS p
JOIN oc_product_to_category AS c ON o.product_id = c.product_id
WHERE c.category_id = 98
实际上,甚至没有任何理由加入oc_产品,因为您没有使用该表中的任何内容。您只需执行以下操作:

INSERT INTO oc_product_option (product_id, option_id, value, required)
SELECT product_id, 15 AS option_id, '' AS value, 0 AS required
FROM oc_product_to_category
WHERE category_id = 98

我对你的要求不太了解,但我认为这可能会对你有所帮助

SELECT 
    a.product_id, 
    15 AS option_id, 
    '' AS VALUE, 
    0 AS required 
FROM 
    oc_product a 
JOIN    
    oc_product_option b
ON  
    (a.product_id=b.product_id)
JOIN    
    oc_product_to_category c
ON  
    (a.product_id=c.product_id)
WHERE 
    c.category_id = 98; 

使用一些数据源示例和预期结果集来说明您的需求这里是我的查询选择从oc_product中选择product_id,其中oc_product.product_id=oc_product_option.product_id作为product_id,15作为option_id作为值,根据需要从oc_product_option内部将oc_product_加入oc_product_到oc_product_option.product_id=c.product_id其中c.category_id=98我给出了4条记录,但我想要所有类别_id=98的产品,因为我知道我有很多类别_id=98的产品您的查询很奇怪,我没有要求您进行查询,我确实要求您的两个表的ech有几个记录,以及您需要获取的预期结果集。难道您不能只使用一个简单的联接吗?为什么需要子查询?问题是要插入产品?你想在哪里插入它们?亲爱的Barmar,我已经做了这个查询,但它只提供了4条记录,但我知道有很多产品的类别_id=98,为什么它只提供了4条记录?因为你加入了oc_product_选项,它只提供了有选项的产品。