PGSQL-to-MYSQL Migration: Error in a 'simple' inner join query

Поиск
Список
Период
Сортировка
От DaNieL
Тема PGSQL-to-MYSQL Migration: Error in a 'simple' inner join query
Дата
Msg-id 8b7677d2-5580-4e48-91ff-130b9fe72dda@p4g2000vba.googlegroups.com
обсуждение исходный текст
Ответы Re: PGSQL-to-MYSQL Migration: Error in a 'simple' inner join query  (Bill Moran <wmoran@potentialtech.com>)
Re: PGSQL-to-MYSQL Migration: Error in a 'simple' inner join query  (Ivan Sergio Borgonovo <mail@webthatworks.it>)
Re: PGSQL-to-MYSQL Migration: Error in a 'simple' inner join query  (Andy Colson <andy@squeakycode.net>)
Re: PGSQL-to-MYSQL Migration: Error in a 'simple' inner join query  (David Fetter <david@fetter.org>)
Re: PGSQL-to-MYSQL Migration: Error in a 'simple' inner join query  (Merlin Moncure <mmoncure@gmail.com>)
Re: PGSQL-to-MYSQL Migration: Error in a 'simple' inner join query  (Scott Marlowe <scott.marlowe@gmail.com>)
Список pgsql-general
Hi guys, this is my first approach to postgresql..

Well, lets say that i have 3 tables: orders, customer, and order_item.
The tables are really simple:

---
CREATE TABLE customer (
    id integer NOT NULL,
    name character(50)
);
---
CREATE TABLE orders (
    id integer NOT NULL,
    id_customer integer,
    code character(10)
);

---
CREATE TABLE order_item (
    id integer NOT NULL,
    id_order integer,
    text text,
    price numeric(5,2)
);
---

Every id in every table is a PRIMARY KEY, UNIQUE, NOT NULL and serial
type..
The query that i have problem with is:
---
SELECT
 orders.code,
 customer.name,
 SUM(order_item.price)
FROM
 orders
 INNER JOIN customer ON (customer.id = orders.id_customer)
 INNER JOIN order_item ON (order_item.id_order = orders.id)
GROUP BY orders.id
---

thet report the error:
---
ERROR:  column "orders.code" must appear in the GROUP BY clause or be
used in an aggregate function
---

...why?
My goal is to retrieve something like
00001 | Mary | 439.43
00002 | Steve | 432.32
00003 | Abigail | 243.32
00004 | Steve | 156.23
becose users can have many orders, and every order can have many
items.

Please, help me.. i really dont understand the error, becose if i
group for the orders.code, the error point at the customer.name:

---
ERROR:  column "customer.name" must appear in the GROUP BY clause or
be used in an aggregate function
---

and if i add the customer.name in the GROUP BY statement, it works
---
0000000002 | Steve | 32
0000000001 | Abigail | 69.77
0000000003 | Abigail | 25.93
---
.. but, why?
Isn't the GROUP BY orders.id statement enaught?
Why the costumers.name is needed?

Sorry, i know that this maybe is a basically problem, but i come from
mysql.. and in mysql that query works...

В списке pgsql-general по дате отправления:

Предыдущее
От: justin
Дата:
Сообщение: Re: Adding automatic backup of a DB
Следующее
От: Bill Moran
Дата:
Сообщение: Re: PGSQL-to-MYSQL Migration: Error in a 'simple' inner join query