2

我正在构建一个 Xojo 应用程序,但我想要执行的查询有问题。

我需要导出保存在数据库中的说明书

它有 3 个表,一个带有页面,一个带有所需的项目和一个项目数据库

现在我需要从 2 个表中获取结果

PartsPerPage 和 Parts

每页零件数

ID    -    SetID   -   Page   -   PartID   -   Parts
1     -    1       -   1      -   37878    -   5
2     -    1       -   1      -   23444    -   6
3     -    1       -   1      -   34534    -   11
4     -    1       -   2      -   37878    -   4

部分

ID     -   Name   -   Size   -   Image   -   Stock   -   ColorID   -   SortCode
37878  -   Blabla -   6      -   picture -   56      -   12        -   box1
23444  -   Blabla -   9      -   picture -   12      -   11        -   box1
34534  -   Blabla -   3      -   picture -   66      -   101       -   box2
37878  -   Blabla -   2      -   picture -   33      -   4         -   box5

现在我想获取所有使用的项目的列表

ID     -  Parts  -  Name     -  Size   -  Image    -  ColorID
37878  -  9      -  Blabla   -  6      -  Picture  -  12
23444  -  6      -  Blabla   -  9      -  Picture  -  11  
34534  -  11     -  Blabla   -  3      -  Picture  -  101

我尝试了一些 Sql 查询但没有任何成功

这个只给了我一条记录,但应该是 155 条记录

SELECT DISTINCT 
     PartsPerPage.PartID, 
     SUM(PartsPerPage.Parts), 
     Parts.Name,
     Parts.Discription, 
     Parts.Size, Parts.image, 
     Parts.ColorID 
FROM PartsPerPage JOIN Parts ON Parts.ID = PartsPerPage.PartID 
WHERE PartsPerPage.SetID = 1

当我只是做一个简单的查询时,如果我做一个记录计数,我会得到 155 条记录,但没有得到结果

SELECT DISTINCT 
     PartsPerPage.PartID
FROM PartsPerPage
WHERE PartsPerPage.SetID = 1

任何帮助都会很棒

4

2 回答 2

3

大概,您打算:

SELECT ppp.PartID, 
       SUM(PartsPerPage.Parts), 
       p.Name, p.Discription, p.Size, p.image, p.ColorID 
FROM PartsPerPage ppp JOIN
     Parts p
     ON p.ID = ppp.PartID 
WHERE ppp.SetID = 1
GROUP BY ppp.PartID, p.Name, p.Discription, p.Size, p.image, p.ColorID;

GROUP BY是必需的,因为您有一个SUM(). 将SUM()您的查询变成一个聚合查询——没有GROUP BY,只返回一行。

于 2017-01-28T04:34:49.647 回答
1

你缺少GROUP BY条款

SELECT
     PartsPerPage.PartID, 
     SUM(PartsPerPage.Parts), 
     Parts.Name,
     Parts.Discription, 
     Parts.Size, Parts.image, 
     Parts.ColorID 
FROM PartsPerPage JOIN Parts ON Parts.ID = PartsPerPage.PartID 
WHERE PartsPerPage.SetID = 1
GROUP BY PartsPerPage.PartID;
于 2017-01-28T04:34:45.997 回答