Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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
Sql server SQL Server选择组合表_Sql Server_Select_Composite - Fatal编程技术网

Sql server SQL Server选择组合表

Sql server SQL Server选择组合表,sql-server,select,composite,Sql Server,Select,Composite,我有以下疑问: SELECT p.id as prod_id, * FROM products AS p LEFT JOIN Product_UPC AS UPC ON UPC.ProductID = p.id LEFT JOIN Brands AS b ON p.brand = b.id LEFT JOIN productCategoryLink AS c ON c.ProductID = p.id WHERE (p.id

我有以下疑问:

SELECT  p.id as prod_id, * FROM products AS p 
        LEFT JOIN Product_UPC AS UPC ON UPC.ProductID = p.id
        LEFT JOIN Brands AS b ON p.brand = b.id
        LEFT JOIN productCategoryLink AS c ON c.ProductID = p.id 
        WHERE (p.id = '$this->prod_id')
一个产品可以分配到多个类别,因此我有一个由产品和类别ID组成的复合表。我想修改上面的查询,使其只显示一行数据,就像现在显示多行数据一样,这取决于复合表中有多少类别。我希望以某种方式将类别ID的行显示出来并添加到一行中

例如


这可能吗?如果是这样,怎么做?

您可以尝试在一列中获取类别,以后可以拆分它们:

SELECT  p.id as prod_id, * FROM products AS p
        GROUP_CONCAT(c.category), 
        LEFT JOIN Product_UPC AS UPC ON UPC.ProductID = p.id
        LEFT JOIN Brands AS b ON p.brand = b.id
        LEFT JOIN productCategoryLink AS c ON c.ProductID = p.id 
        WHERE (p.id = '$this->prod_id')
如果要获取所有产品,请使用以下命令更改最后一行

    GROUP BY p.id

你有固定数量的类别吗?如果是,有多少只?我没有固定数量的猫,它是无限的。在你的评论之后,我重新记录了你的问题;对不起,我是个白痴,它不是MySQL而是mssql。“我不认为Group_concat可以解决这个问题。@李蒂:我发现最好的结果是……我修改了所提供链接中的查询,但它不起作用。”。不知道该把什么放在哪里。我修改后的查询是:选择p.id作为产品id,*从产品中选择p交叉应用选择类别id+,'来自信息\u schema.columns AS intern,其中extern.productCategoryLink=intern.productCategoryLink FOR XML路径预修剪列\u名称左连接产品\u UPC作为UPC上的UPC.ProductID=p.id左连接品牌作为p.brand=b.id上的b,其中p.id='4959678'
    GROUP BY p.id