Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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查询_Sql_Sql Server 2005 - Fatal编程技术网

使用联合和分组方式的SQL查询

使用联合和分组方式的SQL查询,sql,sql-server-2005,Sql,Sql Server 2005,查询: SELECT max(image_url), Model_Name FROM ( SELECT max(image_url), Model_Name FROM dbo.proinfo_vodafone WHERE Brand_name='Nokia' UNION SELECT max(image_url), Model_Name FROM dbo.proinfo_3 WHERE Brand_name='Nokia' UNION S

查询:

SELECT max(image_url), Model_Name
FROM (
    SELECT max(image_url), Model_Name
    FROM dbo.proinfo_vodafone WHERE Brand_name='Nokia'
    UNION
    SELECT max(image_url), Model_Name
    FROM dbo.proinfo_3 WHERE Brand_name='Nokia' 
    UNION
    SELECT max(image_url), Model_Name
    FROM dbo.proinfo_t WHERE Brand_name='Nokia'
    UNION
    SELECT max(image_url), Model_Name
    FROM dbo.proinfo_o2 WHERE Brand_name='Nokia'
    UNION
    SELECT max(image_url), Model_Name 
    FROM dbo.proinfo_orange
    WHERE Brand_name='Nokia') AS temp
WHERE Model_Name IS NOT NULL
GROUP BY Model_Name
ORDER BY Model_name ASC
给出错误:Msg 8155,16级,状态2,第3行 没有为“temp”的第1列指定任何列

现在,老实说,我不擅长SQL,我在一个类似的查询中使用Quick Replace进行了这个查询,我似乎无法理解查询的错误

请帮忙! 提前谢谢


Anchit

您的模型看起来已非规范化。为什么您没有一个
proinfo
表,其中包含具有某种
provider
-列的所有提供者,该列将作为
提供者
-表的引用(包含
沃达丰
3
,…)?这将为你省去工会的麻烦。好吧,让我们说我是新来的,这就是我得到的,整个网站都是根据这个模式设计的你能描述一下这个问题的作用吗?彼得·朗先生,谢谢你为我提供了一条减少工会麻烦的途径。我已经创建了这种类型的表,但它没有image\u url列,所以现在我将使用查询在该表中插入image\u url列。是的,将MAX()列别名为something先生,在您的子查询中没有model\u name的聚合函数,MAX(image\u url)image\u url将计算什么\是的,先生,现在我知道我遗漏了什么,我使用了您的查询,虽然我还在每个子查询中添加了
GROUP BY Model_Name
子句,但它现在可以正常工作了。虽然我现在会像Peter Lang先生在对我的问题的评论中所建议的那样使用此查询创建一个新表,但这将节省每次应用联合所需的带宽。
  SELECT MAX(image_url), Model_Name
  FROM   (SELECT MAX(image_url) image_url, Model_Name
           FROM   dbo.proinfo_vodafone
           WHERE  Brand_name = 'Nokia'
           UNION
           SELECT MAX(image_url) image_url, Model_Name
           FROM   dbo.proinfo_3
           WHERE  Brand_name = 'Nokia'
           UNION
           SELECT MAX(image_url) image_url, Model_Name
           FROM   dbo.proinfo_t
           WHERE  Brand_name = 'Nokia'
           UNION
           SELECT MAX(image_url) image_url, Model_Name
           FROM   dbo.proinfo_o2
           WHERE  Brand_name = 'Nokia'
           UNION
           SELECT MAX(image_url) image_url, Model_Name
           FROM   dbo.proinfo_orange
           WHERE  Brand_name = 'Nokia') AS temp
  WHERE  Model_Name IS NOT NULL
  GROUP  BY Model_Name
  ORDER  BY Model_name ASC