2015-04-01 107 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