Mysql Query: ошибка, из-за которой подзапрос возвращает более 1 строки - PullRequest
0 голосов
/ 27 июля 2010

Я пытаюсь выполнить сложный запрос из двух таблиц ... Это вопрос из теста навыков.

таблица

**Orders                                    Customer**s
    id                                         id
    date                                     first_name
    shipping_amount                          last_name 
    order_status                             city
    customer_id (Customers.id)             state 

output

-----------+------------+
| State     |  # Orders  |
+-----------+------------+
| NY        |  55        |
| CA        |  40        |
| NJ        |  33        |
| FL        |  21        |
| MO        |  12        |
+-----------+------------+

Я работал над своим запросом, и он выглядит следующим образом ...

select DISTINCT state, (select count(id) Orders
                        from customers
                        group by state
                        ORDER BY Orders DESC) FROM Customers

Это дало мне ошибку, которая говорит, что подзапрос возвращает более 1 строки

Ответы [ 4 ]

4 голосов
/ 27 июля 2010

Попробуйте это:

SELECT c.state, COUNT(o.id) AS Orders 
FROM Customers c, Orders o 
WHERE o.customer_id = c.id 
GROUP BY state 
ORDER BY Orders DESC

Подзапрос не требуется.

0 голосов
/ 27 июля 2010
SELECT c.state as State, COUNT(o.id) as NumOrders
FROM orders o
LEFT JOIN customers c ON (c.id = o.customer_id)
GROUP BY c.state
0 голосов
/ 27 июля 2010

Попробуйте это:

select DISTINCT state, (select count(id) as cnt, Orders from customers group by
    state ORDER BY Orders DESC) Temp FROM Customers
0 голосов
/ 27 июля 2010
SELECT `Customers`.`state`, count(`Orders`.`id`) 
as `orders FROM `Customers` 
LEFT JOIN `Orders` ON `Customers`.`id` = `Orders`.`customer_id` 
GROUP BY `Customers`.`state` 
ORDER BY `orders` DESC
...