2015-04-01 157 views
-2

我想创建一个查询,基本上是这个(不起作用)的equivelant。基本的SQL查询设计问题

SELECT * FROM `categories` AS C AND 
SELECT * FROM `items` AS I AND 
SELECT COUNT(I.id) AS items AND 
SELECT SUM(I.price) AS price; 

我没有使用SQLServer,而是通过PHP使用PDO进行数据库连接。

这是表格。

类别

+----+------------+ 
| id | Category | 
+----+------------+ 
| 1 | First_Cat | 
| 2 | Second_Cat | 
+----+------------+ 

项目

+----+----------+------+-------+ 
| id | category | name | price | 
+----+----------+------+-------+ 
| 1 |  1 | Foo | 1.99 | 
| 2 |  1 | Bar | 2.00 | 
| 3 |  2 | ooF | 0.99 | 
| 4 |  2 | raB | 1.99 | 
+----+----------+------+-------+ 

基于这些表我会期待这些查询结果:

+----+------------+-------+-------+--+ 
| id | category | items | price | | 
+----+------------+-------+-------+--+ 
| 1 | First_Cat |  2 | 3.99 | | 
| 2 | Second_Cat |  2 | 2.98 | | 
+----+------------+-------+-------+--+ 

任何帮助?

+0

它没有PHP的工作吗? – 2015-04-01 13:55:34

+0

不,我试图弄清楚基本结构,但发布说我使用PHP,因为有些人会给SQL服务器解决方案。 – Hobbyist 2015-04-01 13:57:40

+0

@JayBlanchard - 将问题修改得更加清晰 – Hobbyist 2015-04-01 14:01:08

回答

2

您在评论中发布的查询中未加入类别表和项目表的查询。这让我觉得你可以做这样的事情吗?:

SELECT 
    categories.id, 
    categories.Category, 
    COUNT(*) AS items, 
    SUM(items.price) as price 
FROM 
    `categories` 
    JOIN items 
     ON categories.id = items.category 
GROUP BY 
    categories.id, 
    categories.Category 
+0

我试着修改这个来让它工作;但我不能。该查询应返回具有设置为id的id域的'category'域的项目数量。我在这里看到的,但是我不明白COUNT(*)AS项目将如何轮询项目表?获取查询错误无论我如何尝试。 – Hobbyist 2015-04-01 14:16:14

+0

尽管如此,JOIN关键字为我提供了所需的信息,以使其正常工作。 – Hobbyist 2015-04-01 14:22:01